package com.canoo.webtest.engine.xpath; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.xml.namespace.NamespaceContext; public class SimpleNamespaceContext implements NamespaceContext { final Map<String, String> prefix2uri_ = new HashMap<String, String>(); final Map<String, List<String>> uri2prefixes_ = new HashMap<String, List<String>>(); public String getNamespaceURI(final String _prefix) { return prefix2uri_.get(_prefix); } public String getPrefix(final String _namespaceURI) { final List<String> prefixes = uri2prefixes_.get(_namespaceURI); if (prefixes == null) return null; else return prefixes.get(0); } public Iterator<String> getPrefixes(final String _namespaceURI) { final List<String> prefixes = uri2prefixes_.get(_namespaceURI); if (prefixes == null) return null; else return prefixes.iterator(); } public void addNamespace(final String _prefix, final String _uri) { prefix2uri_.put(_prefix, _uri); List<String> prefixes = uri2prefixes_.get(_uri); if (prefixes == null) { prefixes = new ArrayList<String>(); uri2prefixes_.put(_uri, prefixes); } prefixes.add(_prefix); } } /** * A wrapper for a {@link NamespaceContext} allowing to locally add namespaces */ /* * private static class SimpleLocalNamespaceContext extends * SimpleNamespaceContext { private final NamespaceContext fWrappedContext; * SimpleLocalNamespaceContext(final NamespaceContext _wrapped) { * fWrappedContext = _wrapped; } public String * translateNamespacePrefixToUri(final String prefix) { String resp = * super.translateNamespacePrefixToUri(prefix); if (resp == null) return * fWrappedContext.translateNamespacePrefixToUri(prefix); else return resp; } } */