public ArrayList<FullLocation> list(String locationName) throws URISyntaxException{
		log.trace("Retrieving location list");
		JsonObject response = null;
		JsonElement locationsAsJson = null;
		JsonElement cityAsJson = null;
		JsonElement metroAreaAsJson = null;
		FullLocation fullLocation = null;
		ArrayList<FullLocation> locations = new ArrayList<FullLocation>();
		
		if(currentLocation == null || !currentLocation.equals(locationName)){
			currentLocation = locationName;
			setPage(1);
		}

		search(locationName);
		
		if(!checkResponse()){
			locations = null;
		}
		//da : http://www.songkick.com/developer/location-search

		response = getJsonResponse();
		locationsAsJson = response.getAsJsonObject("resultsPage").getAsJsonObject("results").getAsJsonArray("location");
		
		if(response.getAsJsonObject("resultsPage").get("totalEntries").getAsInt() > response.getAsJsonObject("resultsPage").get("perPage").getAsInt())
			setPages(response.getAsJsonObject("resultsPage").get("totalEntries").getAsInt() / response.getAsJsonObject("resultsPage").get("perPage").getAsInt());
		else
			setPages(1);
		
		JsonArray locationsArray = locationsAsJson.getAsJsonArray();
		
		for(JsonElement location : locationsArray){
		
			metroAreaAsJson = location.getAsJsonObject().getAsJsonObject("metroArea");
			cityAsJson = location.getAsJsonObject().getAsJsonObject("city");
			
			fullLocation = new FullLocation(Extractor.extractMetroArea(metroAreaAsJson),
											Extractor.extractCity(cityAsJson));
			locations.add(fullLocation);
		}
		
		clearQuery();
		
		log.trace("Succesfully retrieved locations");

		return locations;
	}