FileDocCategorySizeDatePackage
JSTLXPathNamespaceContext.javaAPI DocGlassfish v2 API6704Sat May 05 19:17:54 BST 2007org.apache.taglibs.standard.tag.common.xml

JSTLXPathNamespaceContext

public class JSTLXPathNamespaceContext extends Object implements NamespaceContext
Implemenation of XML Namespace context processing given a URI or prefix

Fields Summary
HashMap
namespaces
The context to resolve the prefix from, if the context is not given.
Constructors Summary
public JSTLXPathNamespaceContext()
No-arg constructor which would create empty HashMap of namespaces

        namespaces = new HashMap();
    
public JSTLXPathNamespaceContext(HashMap nses)

        namespaces = nses;
    
Methods Summary
protected voidaddNamespace(java.lang.String prefix, java.lang.String uri)
Populate map of Prefix and NameSpace URI's entries

        namespaces.put(prefix, uri );
    
public java.lang.StringgetNamespaceURI(java.lang.String prefix)
Get Namespace URI bound to a prefix in the current scope

param
Prefix Parameter
return
Namespace URI bound to prefix
throws
IllegalArgumentException if prefix is null

        // p("[getNamespaceURI] prefix: " + prefix);
        if (prefix == null) {
            throw new IllegalArgumentException("Cannot get Namespace URI for null prefix");
        }

        if (prefix.equals(XMLConstants.XML_NS_PREFIX)) {
            return XMLConstants.XML_NS_URI;
        }
        if (prefix.equals(XMLConstants.XMLNS_ATTRIBUTE)) {
            return XMLConstants.XMLNS_ATTRIBUTE_NS_URI;
        }

        String namespaceURI = (String)namespaces.get(prefix);
        // p("[getNamespaceURI] namespaceURI: " + namespaceURI);
        if (namespaceURI != null) {
            return namespaceURI;
        } 

        return XMLConstants.NULL_NS_URI;
    
public java.lang.StringgetPrefix(java.lang.String namespaceURI)
Get Prefix bound to Namespace URI in the current scope

param
Namespace URI
return
Prefix bound to Namespace URI
throws
IllegalArgumentException if Namespace URI is null

        // p("[getPrefix] namespaceURI: " + namespaceURI);
        if (namespaceURI == null) {
            throw new IllegalArgumentException("Cannot get prefix for null NamespaceURI");
        }

        if (namespaceURI.equals(XMLConstants.XML_NS_URI)) {
            return XMLConstants.XML_NS_PREFIX;
        }
        if (namespaceURI.equals(XMLConstants.XMLNS_ATTRIBUTE_NS_URI)) {
            return XMLConstants.XMLNS_ATTRIBUTE;
        }

        Iterator iter = namespaces.keySet().iterator();
        while (iter.hasNext()) {
            String key = (String)iter.next();
            String value = (String)namespaces.get(key);
            if (value.equals(namespaceURI)) {
                // p("[getPrefix] value: " + value);
                return value;
            }
        }

        // p("[getPrefix] returning null");
        return null;
    
public java.util.IteratorgetPrefixes(java.lang.String namespaceURI)
Get all Prefixes bound to Namespace URI in the current scope

param
Namespace URI
return
Iterator of Prefixes bound to Namespace URI
throws
IllegalArgumentException if Namespace URI is null

        // p("[getPrefixes] namespaceURI: " + namespaceURI);
        if (namespaceURI == null) {
            throw new IllegalArgumentException("Cannot get prefix for null NamespaceURI");
        }

        if (namespaceURI.equals(XMLConstants.XML_NS_URI)) {
            return Arrays.asList(new String[] {XMLConstants.XML_NS_PREFIX}).iterator();
        }
        if (namespaceURI.equals(XMLConstants.XMLNS_ATTRIBUTE_NS_URI)) {
            return Arrays.asList(new String[] {XMLConstants.XMLNS_ATTRIBUTE}).iterator();
        }

        ArrayList prefixList = new ArrayList();
        Iterator iter = namespaces.keySet().iterator();
        while (iter.hasNext()) {
            String key = (String)iter.next();
            String value = (String)namespaces.get(key);
            if (value.equals(namespaceURI)) {
                prefixList.add(key);
            }
        }

        // p("[getPrefixes] prefixList: " + prefixList);
        return prefixList.iterator();
    
private static voidp(java.lang.String s)

        System.out.println("[JSTLXPathNameContext] " + s);