b87033953be26b0dc7dead8febd499b666a54126Peter Major//
b87033953be26b0dc7dead8febd499b666a54126Peter Major// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v1.0.6-b27-fcs
b87033953be26b0dc7dead8febd499b666a54126Peter Major// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
b87033953be26b0dc7dead8febd499b666a54126Peter Major// Any modifications to this file will be lost upon recompilation of the source schema.
b87033953be26b0dc7dead8febd499b666a54126Peter Major// Generated on: 2012.09.08 at 08:59:44 DU CEST
b87033953be26b0dc7dead8febd499b666a54126Peter Major//
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Majorpackage com.sun.identity.diagnostic.base.core.jaxbgen.impl.runtime;
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Majorimport java.util.Enumeration;
b87033953be26b0dc7dead8febd499b666a54126Peter Majorimport java.util.HashMap;
b87033953be26b0dc7dead8febd499b666a54126Peter Majorimport java.util.HashSet;
b87033953be26b0dc7dead8febd499b666a54126Peter Majorimport java.util.Iterator;
b87033953be26b0dc7dead8febd499b666a54126Peter Majorimport java.util.Map;
b87033953be26b0dc7dead8febd499b666a54126Peter Majorimport java.util.Set;
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Majorimport javax.xml.XMLConstants;
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Majorimport org.xml.sax.SAXException;
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Majorimport com.sun.xml.bind.marshaller.NamespacePrefixMapper;
b87033953be26b0dc7dead8febd499b666a54126Peter Majorimport com.sun.xml.bind.marshaller.NamespaceSupport;
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major/**
b87033953be26b0dc7dead8febd499b666a54126Peter Major * Implementation of the NamespaceContext2.
b87033953be26b0dc7dead8febd499b666a54126Peter Major *
b87033953be26b0dc7dead8febd499b666a54126Peter Major * This class also provides several utility methods for
b87033953be26b0dc7dead8febd499b666a54126Peter Major * XMLSerializer-derived classes.
b87033953be26b0dc7dead8febd499b666a54126Peter Major *
b87033953be26b0dc7dead8febd499b666a54126Peter Major * The startElement method and the endElement method need to be called
b87033953be26b0dc7dead8febd499b666a54126Peter Major * appropriately when used. See javadoc for those methods for details.
b87033953be26b0dc7dead8febd499b666a54126Peter Major */
b87033953be26b0dc7dead8febd499b666a54126Peter Majorpublic class NamespaceContextImpl implements NamespaceContext2
b87033953be26b0dc7dead8febd499b666a54126Peter Major{
b87033953be26b0dc7dead8febd499b666a54126Peter Major /**
b87033953be26b0dc7dead8febd499b666a54126Peter Major * Sequence generator. Used as the last resort to generate
b87033953be26b0dc7dead8febd499b666a54126Peter Major * unique prefix.
b87033953be26b0dc7dead8febd499b666a54126Peter Major */
b87033953be26b0dc7dead8febd499b666a54126Peter Major private int iota = 1;
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major /**
b87033953be26b0dc7dead8febd499b666a54126Peter Major * Used to maintain association between prefixes and URIs.
b87033953be26b0dc7dead8febd499b666a54126Peter Major */
b87033953be26b0dc7dead8febd499b666a54126Peter Major private final NamespaceSupport nss = new NamespaceSupport();
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major /**
b87033953be26b0dc7dead8febd499b666a54126Peter Major * A flag that indicates the current mode of this object.
b87033953be26b0dc7dead8febd499b666a54126Peter Major */
b87033953be26b0dc7dead8febd499b666a54126Peter Major private boolean inCollectingMode;
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major /** Assigns prefixes to URIs. Can be null. */
b87033953be26b0dc7dead8febd499b666a54126Peter Major private final NamespacePrefixMapper prefixMapper;
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major /**
b87033953be26b0dc7dead8febd499b666a54126Peter Major * Used during the collecting mode to sort out the namespace
b87033953be26b0dc7dead8febd499b666a54126Peter Major * URIs we need for this element.
b87033953be26b0dc7dead8febd499b666a54126Peter Major *
b87033953be26b0dc7dead8febd499b666a54126Peter Major * A map from prefixes to namespace URIs.
b87033953be26b0dc7dead8febd499b666a54126Peter Major */
b87033953be26b0dc7dead8febd499b666a54126Peter Major private final Map decls = new HashMap();
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major private final Map reverseDecls = new HashMap();
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major public NamespaceContextImpl(NamespacePrefixMapper _prefixMapper) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major this.prefixMapper = _prefixMapper;
b87033953be26b0dc7dead8febd499b666a54126Peter Major // declare the default namespace binding
b87033953be26b0dc7dead8febd499b666a54126Peter Major // which are effective because of the way XML1.0 is made
b87033953be26b0dc7dead8febd499b666a54126Peter Major nss.declarePrefix("","");
b87033953be26b0dc7dead8febd499b666a54126Peter Major nss.declarePrefix( "xmlns", XMLConstants.XMLNS_ATTRIBUTE_NS_URI );
b87033953be26b0dc7dead8febd499b666a54126Peter Major// this one is taken care of by the NamespaceSupport class by default.
b87033953be26b0dc7dead8febd499b666a54126Peter Major// nss.declarePrefix( "xml", XMLConstants.XML_NS_URI );
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major public final NamespacePrefixMapper getNamespacePrefixMapper() {
b87033953be26b0dc7dead8febd499b666a54126Peter Major return prefixMapper;
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major//
b87033953be26b0dc7dead8febd499b666a54126Peter Major//
b87033953be26b0dc7dead8febd499b666a54126Peter Major// public methods of MarshallingContext
b87033953be26b0dc7dead8febd499b666a54126Peter Major//
b87033953be26b0dc7dead8febd499b666a54126Peter Major//
b87033953be26b0dc7dead8febd499b666a54126Peter Major /**
b87033953be26b0dc7dead8febd499b666a54126Peter Major * @param requirePrefix
b87033953be26b0dc7dead8febd499b666a54126Peter Major * true if this is called for attribute name. false otherwise.
b87033953be26b0dc7dead8febd499b666a54126Peter Major */
b87033953be26b0dc7dead8febd499b666a54126Peter Major public String declareNamespace( String namespaceUri, String preferedPrefix, boolean requirePrefix ) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major if( !inCollectingMode ) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major if( !requirePrefix && nss.getURI("").equals(namespaceUri) )
b87033953be26b0dc7dead8febd499b666a54126Peter Major return ""; // can use the default prefix. use it whenever we can
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major // find a valid prefix for this namespace URI
b87033953be26b0dc7dead8febd499b666a54126Peter Major // ASSERTION: the result is always non-null,
b87033953be26b0dc7dead8febd499b666a54126Peter Major // since we require all the namespace URIs to be declared while
b87033953be26b0dc7dead8febd499b666a54126Peter Major // this object is in collection mode.
b87033953be26b0dc7dead8febd499b666a54126Peter Major if (requirePrefix)
b87033953be26b0dc7dead8febd499b666a54126Peter Major return nss.getPrefix2(namespaceUri);
b87033953be26b0dc7dead8febd499b666a54126Peter Major else
b87033953be26b0dc7dead8febd499b666a54126Peter Major return nss.getPrefix(namespaceUri);
b87033953be26b0dc7dead8febd499b666a54126Peter Major } else {
b87033953be26b0dc7dead8febd499b666a54126Peter Major if( requirePrefix && namespaceUri.length()==0 )
b87033953be26b0dc7dead8febd499b666a54126Peter Major return "";
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major // collect this new namespace URI
b87033953be26b0dc7dead8febd499b666a54126Peter Major String prefix = (String)reverseDecls.get(namespaceUri);
b87033953be26b0dc7dead8febd499b666a54126Peter Major if( prefix!=null ) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major if( !requirePrefix || prefix.length()!=0 ) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major // this namespace URI is already taken care of,
b87033953be26b0dc7dead8febd499b666a54126Peter Major // and it satisfies the "requirePrefix" requirement.
b87033953be26b0dc7dead8febd499b666a54126Peter Major return prefix;
b87033953be26b0dc7dead8febd499b666a54126Peter Major } else {
b87033953be26b0dc7dead8febd499b666a54126Peter Major // the prefix was already allocated but it's "",
b87033953be26b0dc7dead8febd499b666a54126Peter Major // and we specifically need non-empty prefix.
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major // erase the current binding
b87033953be26b0dc7dead8febd499b666a54126Peter Major decls.remove(prefix);
b87033953be26b0dc7dead8febd499b666a54126Peter Major reverseDecls.remove(namespaceUri);
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major if( namespaceUri.length()==0 ) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major // the empty namespace URI needs to be bound to the default prefix.
b87033953be26b0dc7dead8febd499b666a54126Peter Major prefix = "";
b87033953be26b0dc7dead8febd499b666a54126Peter Major } else {
b87033953be26b0dc7dead8febd499b666a54126Peter Major // see if this namespace URI is already in-scope
b87033953be26b0dc7dead8febd499b666a54126Peter Major prefix = nss.getPrefix(namespaceUri);
b87033953be26b0dc7dead8febd499b666a54126Peter Major if( prefix==null )
b87033953be26b0dc7dead8febd499b666a54126Peter Major prefix = (String)reverseDecls.get(namespaceUri);
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major if( prefix==null ) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major // if not, try to allocate a new one.
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major // use prefixMapper if specified. If so, just let the
b87033953be26b0dc7dead8febd499b666a54126Peter Major // prefixMapper decide if it wants to use the suggested prefix.
b87033953be26b0dc7dead8febd499b666a54126Peter Major // otherwise our best bet is the suggested prefix.
b87033953be26b0dc7dead8febd499b666a54126Peter Major if( prefixMapper!=null )
b87033953be26b0dc7dead8febd499b666a54126Peter Major prefix = prefixMapper.getPreferredPrefix(
b87033953be26b0dc7dead8febd499b666a54126Peter Major namespaceUri,preferedPrefix,requirePrefix);
b87033953be26b0dc7dead8febd499b666a54126Peter Major else
b87033953be26b0dc7dead8febd499b666a54126Peter Major prefix = preferedPrefix;
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major if( prefix==null )
b87033953be26b0dc7dead8febd499b666a54126Peter Major // if the user don't care, generate one
b87033953be26b0dc7dead8febd499b666a54126Peter Major prefix = "ns"+(iota++);
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major // ASSERT: prefix!=null
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major if( requirePrefix && prefix.length()==0 )
b87033953be26b0dc7dead8febd499b666a54126Peter Major // we can't map it to the default prefix. generate one.
b87033953be26b0dc7dead8febd499b666a54126Peter Major prefix = "ns"+(iota++);
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major while(true) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major String existingUri = (String)decls.get(prefix);
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major if( existingUri==null ) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major // this prefix is unoccupied. use it
b87033953be26b0dc7dead8febd499b666a54126Peter Major decls.put( prefix, namespaceUri );
b87033953be26b0dc7dead8febd499b666a54126Peter Major reverseDecls.put( namespaceUri, prefix );
b87033953be26b0dc7dead8febd499b666a54126Peter Major return prefix;
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major if( existingUri.length()==0 ) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major // we have to remap the new namespace URI to a different
b87033953be26b0dc7dead8febd499b666a54126Peter Major // prefix because the current association of ""->"" cannot
b87033953be26b0dc7dead8febd499b666a54126Peter Major // be changed
b87033953be26b0dc7dead8febd499b666a54126Peter Major ;
b87033953be26b0dc7dead8febd499b666a54126Peter Major } else {
b87033953be26b0dc7dead8febd499b666a54126Peter Major // the new one takes precedence. this is necessary
b87033953be26b0dc7dead8febd499b666a54126Peter Major // because we might first assign "uri1"->"" and then
b87033953be26b0dc7dead8febd499b666a54126Peter Major // later find that ""->"" needs to be added.
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major // so change the existing one
b87033953be26b0dc7dead8febd499b666a54126Peter Major decls.put( prefix, namespaceUri );
b87033953be26b0dc7dead8febd499b666a54126Peter Major reverseDecls.put( namespaceUri, prefix );
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major namespaceUri = existingUri;
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major // we need to find a new prefix for URI "namespaceUri"
b87033953be26b0dc7dead8febd499b666a54126Peter Major // generate a machine-made prefix
b87033953be26b0dc7dead8febd499b666a54126Peter Major prefix = "ns"+(iota++);
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major // go back to the loop and reassign
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major public String getPrefix( String namespaceUri ) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major // even through the method name is "getPrefix", we
b87033953be26b0dc7dead8febd499b666a54126Peter Major // use this method to declare prefixes if necessary.
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major // the only time a prefix is required is when we print
b87033953be26b0dc7dead8febd499b666a54126Peter Major // attribute names, and in those cases we will call
b87033953be26b0dc7dead8febd499b666a54126Peter Major // declareNamespace method directly. So it's safe to
b87033953be26b0dc7dead8febd499b666a54126Peter Major // assume that we don't require a prefix in this case.
b87033953be26b0dc7dead8febd499b666a54126Peter Major return declareNamespace(namespaceUri,null,false);
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major /**
b87033953be26b0dc7dead8febd499b666a54126Peter Major * Obtains the namespace URI currently associated to the given prefix.
b87033953be26b0dc7dead8febd499b666a54126Peter Major * If no namespace URI is associated, return null.
b87033953be26b0dc7dead8febd499b666a54126Peter Major */
b87033953be26b0dc7dead8febd499b666a54126Peter Major public String getNamespaceURI( String prefix ) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major String uri = (String)decls.get(prefix);
b87033953be26b0dc7dead8febd499b666a54126Peter Major if(uri!=null) return uri;
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major return nss.getURI(prefix);
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major public Iterator getPrefixes( String namespaceUri ) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major // not particularly efficient implementation.
b87033953be26b0dc7dead8febd499b666a54126Peter Major Set s = new HashSet();
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major String prefix = (String)reverseDecls.get(namespaceUri);
b87033953be26b0dc7dead8febd499b666a54126Peter Major if(prefix!=null) s.add(prefix);
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major if( nss.getURI("").equals(namespaceUri) )
b87033953be26b0dc7dead8febd499b666a54126Peter Major s.add("");
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major for( Enumeration e=nss.getPrefixes(namespaceUri); e.hasMoreElements(); )
b87033953be26b0dc7dead8febd499b666a54126Peter Major s.add(e.nextElement());
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major return s.iterator();
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major /**
b87033953be26b0dc7dead8febd499b666a54126Peter Major * Sets the current bindings aside and starts a new element context.
b87033953be26b0dc7dead8febd499b666a54126Peter Major *
b87033953be26b0dc7dead8febd499b666a54126Peter Major * This method should be called at the beginning of the startElement method
b87033953be26b0dc7dead8febd499b666a54126Peter Major * of the Serializer implementation.
b87033953be26b0dc7dead8febd499b666a54126Peter Major */
b87033953be26b0dc7dead8febd499b666a54126Peter Major public void startElement() {
b87033953be26b0dc7dead8febd499b666a54126Peter Major nss.pushContext();
b87033953be26b0dc7dead8febd499b666a54126Peter Major inCollectingMode = true;
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major /**
b87033953be26b0dc7dead8febd499b666a54126Peter Major * Reconciles the namespace URI/prefix mapping requests since the
b87033953be26b0dc7dead8febd499b666a54126Peter Major * last startElement method invocation and finalizes them.
b87033953be26b0dc7dead8febd499b666a54126Peter Major *
b87033953be26b0dc7dead8febd499b666a54126Peter Major * This method must be called after all the necessary namespace URIs
b87033953be26b0dc7dead8febd499b666a54126Peter Major * for this element is reported through the declareNamespace method
b87033953be26b0dc7dead8febd499b666a54126Peter Major * or the getPrefix method.
b87033953be26b0dc7dead8febd499b666a54126Peter Major */
b87033953be26b0dc7dead8febd499b666a54126Peter Major public void endNamespaceDecls() {
b87033953be26b0dc7dead8febd499b666a54126Peter Major if(!decls.isEmpty()) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major // most of the times decls is empty, so take advantage of it.
b87033953be26b0dc7dead8febd499b666a54126Peter Major for( Iterator itr=decls.entrySet().iterator(); itr.hasNext(); ) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major Map.Entry e = (Map.Entry)itr.next();
b87033953be26b0dc7dead8febd499b666a54126Peter Major String prefix = (String)e.getKey();
b87033953be26b0dc7dead8febd499b666a54126Peter Major String uri = (String)e.getValue();
b87033953be26b0dc7dead8febd499b666a54126Peter Major if(!uri.equals(nss.getURI(prefix))) // avoid redundant decls.
b87033953be26b0dc7dead8febd499b666a54126Peter Major nss.declarePrefix( prefix, uri );
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major decls.clear();
b87033953be26b0dc7dead8febd499b666a54126Peter Major reverseDecls.clear();
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major inCollectingMode = false;
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major /**
b87033953be26b0dc7dead8febd499b666a54126Peter Major * Ends the current element context and gets back to the parent context.
b87033953be26b0dc7dead8febd499b666a54126Peter Major *
b87033953be26b0dc7dead8febd499b666a54126Peter Major * This method should be called at the end of the endElement method
b87033953be26b0dc7dead8febd499b666a54126Peter Major * of derived classes.
b87033953be26b0dc7dead8febd499b666a54126Peter Major */
b87033953be26b0dc7dead8febd499b666a54126Peter Major public void endElement() {
b87033953be26b0dc7dead8febd499b666a54126Peter Major nss.popContext();
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major /** Iterates all newly declared namespace prefixes for this element. */
b87033953be26b0dc7dead8febd499b666a54126Peter Major public void iterateDeclaredPrefixes( PrefixCallback callback ) throws SAXException {
b87033953be26b0dc7dead8febd499b666a54126Peter Major for( Enumeration e=nss.getDeclaredPrefixes(); e.hasMoreElements(); ) {
b87033953be26b0dc7dead8febd499b666a54126Peter Major String p = (String)e.nextElement();
b87033953be26b0dc7dead8febd499b666a54126Peter Major String uri = nss.getURI(p);
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major callback.onPrefixMapping( p, uri );
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major }
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major
b87033953be26b0dc7dead8febd499b666a54126Peter Major}