private void loadLocalConfig() throws StagingException {
		Map<URI, SharedStagingArea> localAreas = new HashMap<URI, SharedStagingArea>();
		this.areas.put(LOCAL_CONFIG_URL, localAreas);
		try {
			JsonNode rnode;
			ObjectMapper om = new ObjectMapper();
			rnode = om.readTree(this.localConfig);
			if (rnode.has("customMappings")) {
				@SuppressWarnings("rawtypes")
				Map mappings = om.treeToValue(rnode.get("customMappings"),
						Map.class);
				for (Object key : mappings.keySet()) {
					URI stageURI = URI.create((String) key);
					URI mappedURI = URI.create((String) mappings.get(key));
					this.storageMappings.put(stageURI, mappedURI);
				}
			}
			if (rnode.has("repositoryConfigurations")) {
				JsonNode rconfigs = rnode.get("repositoryConfigurations");
				repositoryConfigURLs = new ArrayList<URL>(rconfigs.size());
				for (int i = 0; i < rconfigs.size(); i++) {
					URL config = new URL(rconfigs.get(i).asText());
					repositoryConfigURLs.add(config);
				}
			}
			if (rnode.has("stagingAreas")) {
				JsonNode node = rnode.get("stagingAreas");
				for (Iterator<String> areaIter = node.fieldNames(); areaIter
						.hasNext();) {
					String uriStr = areaIter.next();
					JsonNode areaNode = node.get(uriStr);
					URI uri = URI.create(uriStr);
					SharedStagingArea stage = parseSharedStagingArea(om, uri,
							areaNode, LOCAL_CONFIG_URL);
					if (this.storageMappings.containsKey(uri)) {
						stage.setStorageMapping(this.storageMappings.get(uri));
					}
					localAreas.put(uri, stage);
				}
			}
		} catch (IOException e) {
			log.error("Cannot read local staging config.", e);
			throw new StagingException("Cannot read local staging config.", e);
		}
	}