package com.idega.util.xml; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.Map.Entry; import javax.xml.XMLConstants; import javax.xml.namespace.NamespaceContext; /** * @author <a href="mailto:civilis@idega.com">Vytautas Čivilis</a> * @version $Revision: 1.1 $ * * Last modified: $Date: 2007/09/27 16:23:30 $ by $Author: civilis $ */ public class NamespaceContextImpl implements NamespaceContext { private HashMap<String, String> prefixMap; public NamespaceContextImpl() { prefixMap = new HashMap<String, String>(); } public String getNamespaceURI(String prefix) { return prefixMap.containsKey(prefix) ? prefixMap.get(prefix) : XMLConstants.NULL_NS_URI; } public String getPrefix(String uri) { if(prefixMap.containsValue(uri)) { Set<Entry<String, String>> entries = prefixMap.entrySet(); for (Entry<String, String> entry : entries) { if(entry.getValue().equals(uri)) return entry.getKey(); } } return null; } public Iterator<String> getPrefixes(String uri) { if(!prefixMap.containsValue(uri)) return null; Set<Entry<String, String>> entries = prefixMap.entrySet(); List<String> prefixes = new ArrayList<String>(); for (Entry<String, String> entry : entries) if(entry.getValue().equals(uri)) prefixes.add(entry.getKey()); return prefixes.iterator(); } public void addPrefix(String pref, String uri) { prefixMap.put(pref, uri); } public void removePrefix(String pref) { if(prefixMap.containsKey(pref)) prefixMap.remove(pref); } }