/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.ide.websocket.impl;
import javax.inject.Singleton;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
/**
* Defines the mepping between high level identifiers that are used be
* upper services (e.g. json rpc) and low level identifier (which is a
* URL) for internal web socket components.
*
* @author Dmitry Kuleshov
*/
@Singleton
public class UrlResolver {
private final Map<String, String> idMapping = new HashMap<>();
/**
* Sets a mapping for a specified id
*
* @param id
* id to be mapped
* @param url
* url mapping
*/
public void setMapping(String id, String url) {
idMapping.put(id, url);
}
/**
* Resolve URL, provide identifier that is mapped to specified URL.
*
* @param url
* low leve identifier
*
* @return high level identifier
*/
public String resolve(String url) {
for (Entry<String, String> entry : idMapping.entrySet()) {
if (Objects.equals(entry.getValue(), url)) {
return entry.getKey();
}
}
return null;
}
/**
* Gets a URL by high level identifier
*
* @param id
* identifier
*
* @return URL
*/
public String getUrl(String id) {
return idMapping.get(id);
}
/**
* Remove a mepping from resolver's registry
*
* @param id
* identifier of the mapping
*
* @return removed URL mapped to specified id
*/
public String removeMapping(String id) {
return idMapping.remove(id);
}
}