org.apache.ws.jaxme.util

Class NamespaceSupport

public class NamespaceSupport extends Object implements NamespaceContext

Similar to org.xml.sax.NamespaceSupport, but for marshalling and not for parsing XML.

Version: $Id: NamespaceSupport.java 232067 2005-03-10 10:14:08Z jochen $

Author: Jochen Wiedmann

Constructor Summary
NamespaceSupport()

Creates a new instance of NamespaceSupport.

Method Summary
StringcheckContext(int i)
This method is used to restore the namespace state after an element is created.
voiddeclarePrefix(String pPrefix, String pURI)

Declares a new prefix.

StringgetAttributePrefix(String pURI)

Returns a non-empty prefix currently mapped to the given URL or null, if there is no such mapping.

intgetContext()
Returns the current number of assigned prefixes.
StringgetNamespaceURI(String pPrefix)

Given a prefix, returns the URI to which the prefix is currently mapped or null, if there is no such mapping.

Note: This methods behaviour is precisely defined by {@link NamespaceContext#getNamespaceURI(java.lang.String)}.

StringgetPrefix(String pURI)

Returns a prefix currently mapped to the given URI or null, if there is no such mapping.

IteratorgetPrefixes(String pURI)

Returns a collection to all prefixes bound to the given namespace URI.

booleanisPrefixDeclared(String pPrefix)

Returns whether a given prefix is currently declared.

voidreset()

Resets the NamespaceSupport's state for reuse.

voidundeclarePrefix(String pPrefix)

Removes a prefix declaration.

Constructor Detail

NamespaceSupport

public NamespaceSupport()

Creates a new instance of NamespaceSupport.

Method Detail

checkContext

public String checkContext(int i)
This method is used to restore the namespace state after an element is created. It takes as input a state, as returned by {@link #getContext()}.
For any prefix, which was since saving the state, the prefix is returned and deleted from the internal list. In other words, a typical use looks like this:
   NamespaceSupport nss;
   ContentHandler h;
   int context = nss.getContext();
   h.startElement("foo", "bar", "f:bar", new AttributesImpl());
   ...
   h.endElement("foo", "bar", "f:bar");
   for (;;) {
     String prefix = nss.checkContext(context);
     if (prefix == null) {
       break;
     }
     h.endPrefixMapping(prefix);
   }
 

declarePrefix

public void declarePrefix(String pPrefix, String pURI)

Declares a new prefix.

getAttributePrefix

public String getAttributePrefix(String pURI)

Returns a non-empty prefix currently mapped to the given URL or null, if there is no such mapping. This method may be used to find a possible prefix for an attributes namespace URI. For elements you should use {@link #getPrefix(String)}.

Parameters: pURI Thhe namespace URI in question

Throws: IllegalArgumentException The namespace URI is null.

getContext

public int getContext()
Returns the current number of assigned prefixes. Note, that a prefix may be assigned in several nested elements, in which case every assignment is counted.
This method is typically called before invoking the method {@link org.xml.sax.ContentHandler#startElement(String, String, String, org.xml.sax.Attributes)}. The return value is used as a saveable state. After invoking {@link org.xml.sax.ContentHandler#endElement(String, String, String)}, the state is restored by calling {@link #checkContext(int)}.

getNamespaceURI

public String getNamespaceURI(String pPrefix)

Given a prefix, returns the URI to which the prefix is currently mapped or null, if there is no such mapping.

Note: This methods behaviour is precisely defined by {@link NamespaceContext#getNamespaceURI(java.lang.String)}.

Parameters: pPrefix The prefix in question

getPrefix

public String getPrefix(String pURI)

Returns a prefix currently mapped to the given URI or null, if there is no such mapping. This method may be used to find a possible prefix for an elements namespace URI. For attributes you should use {@link #getAttributePrefix(String)}.

Note: This methods behaviour is precisely defined by {@link NamespaceContext#getPrefix(java.lang.String)}.

Parameters: pURI The namespace URI in question

Throws: IllegalArgumentException The namespace URI is null.

getPrefixes

public Iterator getPrefixes(String pURI)

Returns a collection to all prefixes bound to the given namespace URI.

Note: This methods behaviour is precisely defined by {@link NamespaceContext#getPrefixes(java.lang.String)}.

Parameters: pURI The namespace prefix in question

isPrefixDeclared

public boolean isPrefixDeclared(String pPrefix)

Returns whether a given prefix is currently declared.

reset

public void reset()

Resets the NamespaceSupport's state for reuse.

undeclarePrefix

public void undeclarePrefix(String pPrefix)

Removes a prefix declaration. Assumes that the prefix is the current prefix. If not, throws a IllegalStateException.