public HashMap<String, ArrayList<Music>> getMusics() {
		HashMap<String, ArrayList<Music>> musicMap = new HashMap<String, ArrayList<Music>>();
		ArrayList<Music> allTypeList = new ArrayList<Music>();
		for (String type : MUSIC_TYPE_LIST) {
			String prefixStr = MUSIC_DIR + "/" + type + "/";
			ArrayList<OSSObjectSummary> objectList = new ArrayList<OSSObjectSummary>();
			ObjectListing objectListing = null;
			String nextMarker = null;
			boolean fetchNextFlag = true;
			while (fetchNextFlag) {
				try {
					objectListing = ossClient
							.listObjects(new ListObjectsRequest(BUCKET_NAME,
									prefixStr, nextMarker, "/",
									MAXNUM_PER_FETCH));
					objectList.addAll(objectListing.getObjectSummaries());
					nextMarker = objectListing.getNextMarker();
					if (nextMarker == null) {
						fetchNextFlag = false;
					} else {
						fetchNextFlag = true;
					}
					logger.info("next marker:" + nextMarker);
				} catch (Exception e) {
					logger.error("getMusic objectListing throws exception.");
					e.printStackTrace();
				}
			}
			ArrayList<Music> tempList = new ArrayList<Music>();
			// start from 1 to ignore first item(which is dir)
			for (int i = 1; i < objectList.size(); i++) {
				OSSObjectSummary objectSummary = objectList.get(i);
				String key = objectSummary.getKey();
				String name = key.substring(prefixStr.length());
				String url = HOST_PREFIX + key;
				String size = String.valueOf(objectSummary.getSize());
				Music tempMusic = new Music(url, name, size, type);
				tempList.add(tempMusic);
				RandomInsert(allTypeList, tempMusic);
			}
			musicMap.put(type, tempList);
		}
		musicMap.put("all", allTypeList);
		logger.info("All music map:" + musicMap);
		return musicMap;
	}