elena       2002/12/15 17:26:21

  Modified:    java/src/org/apache/xerces/dom DOMNormalizer.java
               java/src/org/apache/xerces/impl XML11NamespaceBinder.java
                        XMLDocumentScannerImpl.java XMLEntityScanner.java
                        XMLNSDocumentScannerImpl.java
                        XMLNamespaceBinder.java
               java/src/org/apache/xerces/impl/dtd XMLDTDValidator.java
                        XMLNSDTDValidator.java
               java/src/org/apache/xerces/impl/xs XMLSchemaValidator.java
               java/src/org/apache/xerces/impl/xs/util SimpleLocator.java
               java/src/org/apache/xerces/parsers AbstractDOMParser.java
                        AbstractSAXParser.java
                        AbstractXMLDocumentParser.java
                        BasicParserConfiguration.java
               java/src/org/apache/xerces/util ErrorHandlerWrapper.java
                        NamespaceSupport.java
               java/src/org/apache/xerces/xni NamespaceContext.java
                        XMLDocumentFragmentHandler.java
                        XMLDocumentHandler.java XMLLocator.java
                        XMLResourceIdentifier.java
  Log:
  XNI modifications
  1. XMLResourceIdentifier add the following methods:
  public void setPublicId(String publicId);
  public void setExpandedSystemId(String systemId);
  public void setLiteralSystemId(String systemId);
  public void setBaseSystemId(String systemId);
  
  2. XMLLocator add the following methods:
  public void setLineNumber();
  public void setColumnNumber();
  
  3. Remove startPrefixMapping/endPrefixMapping from the xni.XMLDocumentHandler and 
xni.XMLDocumentFragmentHandler
  and modify the pipeline. From now one all components that need to read or modify 
namespace context need to save a pointer to the namespace context that is passed in 
the startDocument() call.
  
  4. NamespaceContext
  Add pushContext, popContext, declarePrefix, getURI, reset() methods.
  
  Revision  Changes    Path
  1.20      +5 -36     xml-xerces/java/src/org/apache/xerces/dom/DOMNormalizer.java
  
  Index: DOMNormalizer.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/dom/DOMNormalizer.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- DOMNormalizer.java        11 Dec 2002 16:14:30 -0000      1.19
  +++ DOMNormalizer.java        16 Dec 2002 01:26:19 -0000      1.20
  @@ -173,11 +173,11 @@
       // Update PSVI information in the tree
       protected boolean fPSVI = false;
   
  -    /** stores namespaces in scope */
  -    protected final NamespaceSupport fNamespaceContext = new NamespaceSupport();
  +    /** The namespace context of this document: stores namespaces in scope */
  +    protected final NamespaceContext fNamespaceContext = new NamespaceSupport();
   
  -    /** stores all namespace bindings on the current element */
  -    protected final NamespaceSupport fLocalNSBinder = new NamespaceSupport();
  +    /** Stores all namespace bindings on the current element */
  +    protected final NamespaceContext fLocalNSBinder = new NamespaceSupport();
   
       /** list of attributes */
       protected final Vector fAttributeList = new Vector(5,10);
  @@ -612,9 +612,6 @@
                               fLocalNSBinder.declarePrefix(XMLSymbols.EMPTY_STRING, 
value);
                               
fNamespaceContext.declarePrefix(XMLSymbols.EMPTY_STRING, value);
   
  -                            if (fValidationHandler != null) {
  -                                
fValidationHandler.startPrefixMapping(XMLSymbols.EMPTY_STRING, value, null);
  -                            }
                               removeDefault (attr, attributes);
                               continue;
                           }
  @@ -1216,21 +1213,6 @@
       }
   
       /**
  -     * The start of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     * 
  -     * @param prefix The namespace prefix.
  -     * @param uri    The URI bound to the prefix.
  -     * @param augs   Additional information that may include infoset augmentations
  -     *               
  -     * @exception XNIException
  -     *                   Thrown by handler to signal an error.
  -     */
  -    public void startPrefixMapping(String prefix, String uri, Augmentations augs)
  -        throws XNIException{
  -    }
  -
  -    /**
        * The start of an element.
        * 
        * @param element    The name of the element.
  @@ -1387,19 +1369,6 @@
                   }
               }
           }
  -    }
  -
  -    /**
  -     * The end of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     * 
  -     * @param prefix The namespace prefix.
  -     * @param augs   Additional information that may include infoset augmentations
  -     *               
  -     * @exception XNIException
  -     *                   Thrown by handler to signal an error.
  -     */
  -    public void endPrefixMapping(String prefix, Augmentations augs) throws 
XNIException{
       }
   
       /**
  
  
  
  1.2       +1 -14     
xml-xerces/java/src/org/apache/xerces/impl/XML11NamespaceBinder.java
  
  Index: XML11NamespaceBinder.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XML11NamespaceBinder.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XML11NamespaceBinder.java 11 Dec 2002 15:11:40 -0000      1.1
  +++ XML11NamespaceBinder.java 16 Dec 2002 01:26:19 -0000      1.2
  @@ -106,20 +106,7 @@
   
       /** Default constructor. */
       public XML11NamespaceBinder() {
  -        this(null);
       } // <init>()
  -
  -    /**
  -     * Constructs a namespace binder that shares the specified namespace
  -     * context during each parse.
  -     *
  -     * @param namespaceContext The shared context.
  -     */
  -    public XML11NamespaceBinder(NamespaceContext namespaceContext) {
  -        super(namespaceContext);
  -    } // <init>(NamespaceContext)
  -
  -
       //
       // Public methods
       //
  
  
  
  1.32      +5 -18     
xml-xerces/java/src/org/apache/xerces/impl/XMLDocumentScannerImpl.java
  
  Index: XMLDocumentScannerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLDocumentScannerImpl.java,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- XMLDocumentScannerImpl.java       7 Dec 2002 00:15:59 -0000       1.31
  +++ XMLDocumentScannerImpl.java       16 Dec 2002 01:26:19 -0000      1.32
  @@ -59,31 +59,18 @@
   
   import java.io.EOFException;
   import java.io.IOException;
  -import java.util.Stack;
   
  -import org.apache.xerces.impl.XMLEntityManager;
  -import org.apache.xerces.impl.XMLEntityScanner;
  -import org.apache.xerces.impl.XMLErrorReporter;
  -import org.apache.xerces.impl.msg.XMLMessageFormatter;
   import org.apache.xerces.impl.validation.ValidationManager;
  -
   import org.apache.xerces.util.NamespaceSupport;
  -import org.apache.xerces.util.XMLAttributesImpl;
  -import org.apache.xerces.util.XMLStringBuffer;
  -import org.apache.xerces.util.XMLResourceIdentifierImpl;
  -import org.apache.xerces.util.SymbolTable;
   import org.apache.xerces.util.XMLChar;
  -
  -import org.apache.xerces.xni.QName;
  -import org.apache.xerces.xni.XMLAttributes;
  -import org.apache.xerces.xni.XMLDocumentHandler;
  +import org.apache.xerces.util.XMLResourceIdentifierImpl;
  +import org.apache.xerces.util.XMLStringBuffer;
  +import org.apache.xerces.xni.NamespaceContext;
   import org.apache.xerces.xni.XMLResourceIdentifier;
   import org.apache.xerces.xni.XMLString;
   import org.apache.xerces.xni.XNIException;
  -import org.apache.xerces.xni.parser.XMLComponent;
   import org.apache.xerces.xni.parser.XMLComponentManager;
   import org.apache.xerces.xni.parser.XMLConfigurationException;
  -import org.apache.xerces.xni.parser.XMLDocumentScanner;
   import org.apache.xerces.xni.parser.XMLDTDScanner;
   import org.apache.xerces.xni.parser.XMLInputSource;
   
  @@ -214,7 +201,7 @@
       protected String fDoctypeSystemId;
   
       /** Namespace support. */
  -    protected NamespaceSupport fNamespaceContext = new NamespaceSupport();
  +    protected NamespaceContext fNamespaceContext = new NamespaceSupport();
   
       // features
   
  
  
  
  1.9       +45 -1     xml-xerces/java/src/org/apache/xerces/impl/XMLEntityScanner.java
  
  Index: XMLEntityScanner.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLEntityScanner.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- XMLEntityScanner.java     7 Dec 2002 00:15:58 -0000       1.8
  +++ XMLEntityScanner.java     16 Dec 2002 01:26:19 -0000      1.9
  @@ -1414,6 +1414,49 @@
   
           return -1;
       } // getColumnNumber():int
  +    
  +    /**
  +     * @see org.apache.xerces.xni.XMLLocator#setColumnNumber(int)
  +     */
  +    public void setColumnNumber(int col) {
  +        // no-op
  +    }
  +
  +    /**
  +     * @see org.apache.xerces.xni.XMLLocator#setLineNumber(int)
  +     */
  +    public void setLineNumber(int line) {
  +        //no-op
  +    }
  +    
  +        /**
  +     * @see org.apache.xerces.xni.XMLResourceIdentifier#setBaseSystemId(String)
  +     */
  +    public void setBaseSystemId(String systemId) {        
  +        //no-op
  +    }
  +
  +
  +    /**
  +     * @see org.apache.xerces.xni.XMLResourceIdentifier#setExpandedSystemId(String)
  +     */
  +    public void setExpandedSystemId(String systemId) {
  +        //no-op
  +    }
  +
  +    /**
  +     * @see org.apache.xerces.xni.XMLResourceIdentifier#setLiteralSystemId(String)
  +     */
  +    public void setLiteralSystemId(String systemId) {
  +        //no-op
  +    }
  +
  +    /**
  +     * @see org.apache.xerces.xni.XMLResourceIdentifier#setPublicId(String)
  +     */
  +    public void setPublicId(String publicId) {
  +        //no-op
  +    }
   
       // allow entity manager to tell us what the current entityis:
       public void setCurrentEntity(XMLEntityManager.ScannedEntity ent) {
  @@ -1500,6 +1543,7 @@
           return entityChanged;
   
       } // load(int, boolean):boolean
  +
   
   } // class XMLEntityScanner
   
  
  
  
  1.10      +1 -14     
xml-xerces/java/src/org/apache/xerces/impl/XMLNSDocumentScannerImpl.java
  
  Index: XMLNSDocumentScannerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLNSDocumentScannerImpl.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- XMLNSDocumentScannerImpl.java     7 Dec 2002 00:15:59 -0000       1.9
  +++ XMLNSDocumentScannerImpl.java     16 Dec 2002 01:26:19 -0000      1.10
  @@ -300,10 +300,6 @@
                   if (fBindNamespaces) {
                       int count = fNamespaceContext.getDeclaredPrefixCount();
   
  -                    for (int i = count - 1; i >= 0; i--) {
  -                        String prefix = fNamespaceContext.getDeclaredPrefixAt(i);
  -                        fDocumentHandler.endPrefixMapping(prefix, null);
  -                    }
                       fNamespaceContext.popContext();
                   }
                   //pop the element off the stack..
  @@ -469,10 +465,6 @@
                   // bind namespace attribute to a namespace
                   attributes.setURI(oldLen, 
fNamespaceContext.getURI(XMLSymbols.PREFIX_XMLNS));
   
  -                // call handler
  -                if (fDocumentHandler != null) {
  -                    fDocumentHandler.startPrefixMapping(prefix, uri, null);
  -                }
               }
               else {
                   // attempt to bind attribute
  @@ -542,11 +534,6 @@
   
               fDocumentHandler.endElement(fElementQName, null);
               if (fBindNamespaces) {
  -                int count = fNamespaceContext.getDeclaredPrefixCount();
  -                for (int i = count - 1; i >= 0; i--) {
  -                    String prefix = fNamespaceContext.getDeclaredPrefixAt(i);
  -                    fDocumentHandler.endPrefixMapping(prefix, null);
  -                }
                   fNamespaceContext.popContext();
               }
   
  
  
  
  1.27      +17 -112   
xml-xerces/java/src/org/apache/xerces/impl/XMLNamespaceBinder.java
  
  Index: XMLNamespaceBinder.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLNamespaceBinder.java,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- XMLNamespaceBinder.java   11 Dec 2002 15:11:40 -0000      1.26
  +++ XMLNamespaceBinder.java   16 Dec 2002 01:26:19 -0000      1.27
  @@ -170,11 +170,6 @@
   
       protected XMLDocumentSource fDocumentSource;
   
  -    // namespaces
  -
  -    /** Namespace support. */
  -    protected NamespaceSupport fNamespaceSupport = new NamespaceSupport();
  -
       // settings
   
       /** Only pass start and end prefix mapping events. */
  @@ -196,29 +191,12 @@
   
       /** Default constructor. */
       public XMLNamespaceBinder() {
  -        this(null);
       } // <init>()
   
  -    /**
  -     * Constructs a namespace binder that shares the specified namespace
  -     * context during each parse.
  -     *
  -     * @param namespaceContext The shared context.
  -     */
  -    public XMLNamespaceBinder(NamespaceContext namespaceContext) {
  -        fNamespaceContext = namespaceContext;
  -    } // <init>(NamespaceContext)
  -
  -
       //
       // Public methods
       //
   
  -    /** Returns the current namespace context. */
  -    public NamespaceContext getNamespaceContext() {
  -        return fNamespaceSupport;
  -    } // getNamespaceContext():NamespaceContext
  -
       // settings
   
       /**
  @@ -276,22 +254,6 @@
           fSymbolTable = (SymbolTable)componentManager.getProperty(SYMBOL_TABLE);
           fErrorReporter = 
(XMLErrorReporter)componentManager.getProperty(ERROR_REPORTER);
   
  -        fNamespaceSupport.reset();
  -
  -        // use shared context
  -        NamespaceContext context = fNamespaceContext;
  -        while (context != null) {
  -            int count = context.getDeclaredPrefixCount();
  -            for (int i = 0; i < count; i++) {
  -                String prefix = context.getDeclaredPrefixAt(i);
  -                if (fNamespaceSupport.getURI(prefix) == null) {
  -                    String uri = context.getURI(prefix);
  -                    fNamespaceSupport.declarePrefix(prefix, uri);
  -                }
  -            }
  -            context = context.getParentContext();
  -        }
  -
       } // reset(XMLComponentManager)
   
       /**
  @@ -493,16 +455,15 @@
        *
        * @throws XNIException Thrown by handler to signal an error.
        */
  -    public void startDocument(XMLLocator locator, String encoding, 
  -                              NamespaceContext namespaceContext, Augmentations augs)
  -        throws XNIException {
  -        // REVISIT: in the namespace binder we should be able to modify the 
namespace
  -        //          context object, thus for now we are dropping the 
namespaceContext
  -        //          Not sure this is a correct behaviour....
  -        if (fDocumentHandler != null && !fOnlyPassPrefixMappingEvents) {
  -            fDocumentHandler.startDocument(locator, encoding, fNamespaceSupport, 
augs);
  -        }
  -    } // startDocument(XMLLocator,String)
  +     public void startDocument(XMLLocator locator, String encoding,
  +                                NamespaceContext namespaceContext, Augmentations 
augs)
  +                                   throws XNIException {
  +             fNamespaceContext = namespaceContext;
  +
  +             if (fDocumentHandler != null && !fOnlyPassPrefixMappingEvents) {
  +                     fDocumentHandler.startDocument(locator, encoding, 
namespaceContext, augs);
  +             }
  +     } // startDocument(XMLLocator,String)
   
       /**
        * Notifies of the presence of an XMLDecl line in the document. If
  @@ -582,28 +543,6 @@
           }
       } // processingInstruction(String,XMLString)
   
  -    /**
  -     * The start of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     *
  -     * @param prefix The namespace prefix.
  -     * @param uri    The URI bound to the prefix.
  -     * @param augs     Additional information that may include infoset augmentations
  -     *
  -     * @throws XNIException Thrown by handler to signal an error.
  -     */
  -    public void startPrefixMapping(String prefix, String uri, Augmentations augs)
  -        throws XNIException {
  -
  -        // REVISIT: Should prefix mapping from previous stage in
  -        //          the pipeline affect the namespaces?
  -
  -        // call handlers
  -        if (fDocumentHandler != null) {
  -            fDocumentHandler.startPrefixMapping(prefix, uri, augs);
  -        }
  -
  -    } // startPrefixMapping(String,String)
   
       /**
        * Binds the namespaces. This method will handle calling the
  @@ -708,27 +647,6 @@
       } // endElement(QName)
   
       /**
  -     * The end of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     *
  -     * @param prefix The namespace prefix.
  -     * @param augs     Additional information that may include infoset augmentations
  -     *
  -     * @throws XNIException Thrown by handler to signal an error.
  -     */
  -    public void endPrefixMapping(String prefix, Augmentations augs) throws 
XNIException {
  -
  -        // REVISIT: Should prefix mapping from previous stage in
  -        //          the pipeline affect the namespaces?
  -
  -        // call handlers
  -        if (fDocumentHandler != null) {
  -            fDocumentHandler.endPrefixMapping(prefix, augs);
  -        }
  -
  -    } // endPrefixMapping(String)
  -
  -    /**
        * The start of a CDATA section.
        * @param augs     Additional information that may include infoset augmentations
        *
  @@ -792,7 +710,7 @@
                                         boolean isEmpty) throws XNIException {
   
           // add new namespace context
  -        fNamespaceSupport.pushContext();
  +        fNamespaceContext.pushContext();
   
           if (element.prefix == XMLSymbols.PREFIX_XMLNS) {
               fErrorReporter.reportError(XMLMessageFormatter.XMLNS_DOMAIN,
  @@ -867,19 +785,15 @@
                   }
   
                   // declare prefix in context
  -                fNamespaceSupport.declarePrefix(prefix, uri.length() != 0 ? uri : 
null);
  +                fNamespaceContext.declarePrefix(prefix, uri.length() != 0 ? uri : 
null);
   
  -                // call handler
  -                if (fDocumentHandler != null) {
  -                    fDocumentHandler.startPrefixMapping(prefix, uri, augs);
  -                }
               }
           }
   
           // bind the element
           String prefix = element.prefix != null
                         ? element.prefix : XMLSymbols.EMPTY_STRING;
  -        element.uri = fNamespaceSupport.getURI(prefix);
  +        element.uri = fNamespaceContext.getURI(prefix);
           if (element.prefix == null && element.uri != null) {
               element.prefix = XMLSymbols.EMPTY_STRING;
           }
  @@ -897,11 +811,11 @@
                              ? fAttributeQName.prefix : XMLSymbols.EMPTY_STRING;
               String arawname = fAttributeQName.rawname;
               if (arawname == XMLSymbols.PREFIX_XMLNS) {
  -                fAttributeQName.uri = 
fNamespaceSupport.getURI(XMLSymbols.PREFIX_XMLNS);
  +                fAttributeQName.uri = 
fNamespaceContext.getURI(XMLSymbols.PREFIX_XMLNS);
                   attributes.setName(i, fAttributeQName);
               }
               else if (aprefix != XMLSymbols.EMPTY_STRING) {
  -                fAttributeQName.uri = fNamespaceSupport.getURI(aprefix);
  +                fAttributeQName.uri = fNamespaceContext.getURI(aprefix);
                   if (fAttributeQName.uri == null) {
                       fErrorReporter.reportError(XMLMessageFormatter.XMLNS_DOMAIN,
                                                  "AttributePrefixUnbound",
  @@ -949,7 +863,7 @@
   
           // bind element
           String eprefix = element.prefix != null ? element.prefix : 
XMLSymbols.EMPTY_STRING;
  -        element.uri = fNamespaceSupport.getURI(eprefix);
  +        element.uri = fNamespaceContext.getURI(eprefix);
           if (element.uri != null) {
               element.prefix = eprefix;
           }
  @@ -961,17 +875,8 @@
               }
           }
   
  -        // end prefix mappings
  -        if (fDocumentHandler != null) {
  -            int count = fNamespaceSupport.getDeclaredPrefixCount();
  -            for (int i = count - 1; i >= 0; i--) {
  -                String prefix = fNamespaceSupport.getDeclaredPrefixAt(i);
  -                fDocumentHandler.endPrefixMapping(prefix, augs);
  -            }
  -        }
  -
           // pop context
  -        fNamespaceSupport.popContext();
  +        fNamespaceContext.popContext();
   
       } // handleEndElement(QName,boolean)
   
  
  
  
  1.43      +14 -71    
xml-xerces/java/src/org/apache/xerces/impl/dtd/XMLDTDValidator.java
  
  Index: XMLDTDValidator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dtd/XMLDTDValidator.java,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- XMLDTDValidator.java      11 Dec 2002 16:14:30 -0000      1.42
  +++ XMLDTDValidator.java      16 Dec 2002 01:26:20 -0000      1.43
  @@ -60,43 +60,33 @@
   import org.apache.xerces.impl.Constants;
   import org.apache.xerces.impl.XMLEntityManager;
   import org.apache.xerces.impl.XMLErrorReporter;
  -import org.apache.xerces.impl.validation.ValidationManager;
  -import org.apache.xerces.impl.validation.ValidationState;
  -import org.apache.xerces.impl.msg.XMLMessageFormatter;
  -
  -import org.apache.xerces.impl.validation.EntityState;
   import org.apache.xerces.impl.dtd.models.ContentModelValidator;
  -import org.apache.xerces.impl.dv.DatatypeValidator;
   import org.apache.xerces.impl.dv.DTDDVFactory;
  +import org.apache.xerces.impl.dv.DatatypeValidator;
   import org.apache.xerces.impl.dv.InvalidDatatypeValueException;
  -
  -import org.apache.xerces.util.NamespaceSupport;
  +import org.apache.xerces.impl.msg.XMLMessageFormatter;
  +import org.apache.xerces.impl.validation.ValidationManager;
  +import org.apache.xerces.impl.validation.ValidationState;
   import org.apache.xerces.util.SymbolTable;
  -import org.apache.xerces.util.XMLSymbols;
   import org.apache.xerces.util.XMLChar;
  -
  +import org.apache.xerces.util.XMLSymbols;
   import org.apache.xerces.xni.Augmentations;
   import org.apache.xerces.xni.NamespaceContext;
   import org.apache.xerces.xni.QName;
  -import org.apache.xerces.xni.XMLString;
   import org.apache.xerces.xni.XMLAttributes;
   import org.apache.xerces.xni.XMLDocumentHandler;
   import org.apache.xerces.xni.XMLLocator;
   import org.apache.xerces.xni.XMLResourceIdentifier;
  +import org.apache.xerces.xni.XMLString;
   import org.apache.xerces.xni.XNIException;
  -import org.apache.xerces.xni.grammars.XMLGrammarPool;
  -import org.apache.xerces.xni.grammars.XMLGrammarDescription;
   import org.apache.xerces.xni.grammars.Grammar;
  +import org.apache.xerces.xni.grammars.XMLGrammarDescription;
  +import org.apache.xerces.xni.grammars.XMLGrammarPool;
   import org.apache.xerces.xni.parser.XMLComponent;
   import org.apache.xerces.xni.parser.XMLComponentManager;
   import org.apache.xerces.xni.parser.XMLConfigurationException;
  -import org.apache.xerces.xni.parser.XMLDocumentSource;
   import org.apache.xerces.xni.parser.XMLDocumentFilter;
  -
  -import java.util.Enumeration;
  -import java.util.Hashtable;
  -import java.util.Vector;
  -import java.util.StringTokenizer;
  +import org.apache.xerces.xni.parser.XMLDocumentSource;
   
   /**
    * The DTD validator. The validator implements a document
  @@ -273,7 +263,7 @@
       protected XMLResourceIdentifier fDocLocation;
   
       /** Namespace support. */
  -    protected NamespaceSupport fNamespaceSupport = null;
  +    protected NamespaceContext fNamespaceContext = null;
   
       /** Datatype validator factory. */
       protected DTDDVFactory fDatatypeValidatorFactory;
  @@ -685,20 +675,10 @@
               }
           }
           fDocLocation = locator;
  -        // REVISIT: xni.NamespaceSupport should be read/write, since some
  -        //          components might want or need to modify the namespace 
information
  -        // 
  -        if (namespaceContext instanceof NamespaceSupport) {
  -            fNamespaceSupport = (NamespaceSupport)namespaceContext;
  -        }
  -        else {
  -            // REVISIT: this is a hack for the case user inserts component before
  -            //          DTD validator
  -            fNamespaceSupport = new NamespaceSupport();
  -        }
  -
  +        fNamespaceContext = namespaceContext;
  +   
           if (fDocumentHandler != null) {
  -            fDocumentHandler.startDocument(locator, encoding, fNamespaceSupport, 
augs);
  +            fDocumentHandler.startDocument(locator, encoding, namespaceContext, 
augs);
           }
   
       } // startDocument(XMLLocator,String)
  @@ -774,25 +754,6 @@
   
       } // doctypeDecl(String,String,String, Augmentations)
   
  -    /**
  -     * The start of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     * 
  -     * @param prefix The namespace prefix.
  -     * @param uri    The URI bound to the prefix.     
  -     * @param augs   Additional information that may include infoset augmentations
  -     *
  -     * @throws XNIException Thrown by handler to signal an error.
  -     */
  -    public void startPrefixMapping(String prefix, String uri, Augmentations augs)
  -    throws XNIException {
  -
  -        // call handlers
  -        if (fDocumentHandler != null) {
  -            fDocumentHandler.startPrefixMapping(prefix, uri, augs);
  -        }
  -
  -    } // startPrefixMapping(String,String)
   
       /**
        * The start of an element.
  @@ -936,24 +897,6 @@
           handleEndElement(element,  augs, false);
   
       } // endElement(QName)
  -
  -    /**
  -     * The end of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     * 
  -     * @param prefix The namespace prefix.
  -     * @param augs   Additional information that may include infoset augmentations
  -     *
  -     * @throws XNIException Thrown by handler to signal an error.
  -     */
  -    public void endPrefixMapping(String prefix, Augmentations augs) throws 
XNIException {
  -
  -        // call handlers
  -        if (fDocumentHandler != null) {
  -            fDocumentHandler.endPrefixMapping(prefix, augs);
  -        }
  -
  -    } // endPrefixMapping(String)
   
       /** 
        * The start of a CDATA section. 
  
  
  
  1.5       +9 -29     
xml-xerces/java/src/org/apache/xerces/impl/dtd/XMLNSDTDValidator.java
  
  Index: XMLNSDTDValidator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dtd/XMLNSDTDValidator.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XMLNSDTDValidator.java    24 Sep 2002 23:16:03 -0000      1.4
  +++ XMLNSDTDValidator.java    16 Dec 2002 01:26:20 -0000      1.5
  @@ -57,20 +57,14 @@
   
   package org.apache.xerces.impl.dtd;
   
  -import org.apache.xerces.impl.Constants;
   import org.apache.xerces.impl.XMLErrorReporter;
   import org.apache.xerces.impl.msg.XMLMessageFormatter;
  -
   import org.apache.xerces.util.XMLSymbols;
  -
  -import org.apache.xerces.xni.NamespaceContext;
   import org.apache.xerces.xni.Augmentations;
  +import org.apache.xerces.xni.NamespaceContext;
   import org.apache.xerces.xni.QName;
   import org.apache.xerces.xni.XMLAttributes;
  -import org.apache.xerces.xni.XMLDocumentHandler;
   import org.apache.xerces.xni.XNIException;
  -import org.apache.xerces.xni.parser.XMLComponentManager;
  -import org.apache.xerces.xni.parser.XMLConfigurationException;
   
   
   /**
  @@ -113,7 +107,7 @@
                                         Augmentations augs) throws XNIException {
           
           // add new namespace context
  -        fNamespaceSupport.pushContext();
  +        fNamespaceContext.pushContext();
   
           if (element.prefix == XMLSymbols.PREFIX_XMLNS) {
               fErrorReporter.reportError(XMLMessageFormatter.XMLNS_DOMAIN,
  @@ -184,19 +178,14 @@
                   }
   
                   // declare prefix in context
  -                fNamespaceSupport.declarePrefix(prefix, uri.length() != 0 ? uri : 
null);
  -
  -                // call handler
  -                if (fDocumentHandler != null) {
  -                    fDocumentHandler.startPrefixMapping(prefix, uri, augs);
  -                }
  +                fNamespaceContext.declarePrefix(prefix, uri.length() != 0 ? uri : 
null);
               }
           }
   
           // bind the element
           String prefix = element.prefix != null
                         ? element.prefix : XMLSymbols.EMPTY_STRING;
  -        element.uri = fNamespaceSupport.getURI(prefix);
  +        element.uri = fNamespaceContext.getURI(prefix);
           if (element.prefix == null && element.uri != null) {
               element.prefix = XMLSymbols.EMPTY_STRING;
           }
  @@ -214,11 +203,11 @@
                              ? fAttributeQName.prefix : XMLSymbols.EMPTY_STRING;
               String arawname = fAttributeQName.rawname;
               if (arawname == XMLSymbols.PREFIX_XMLNS) {
  -                fAttributeQName.uri = 
fNamespaceSupport.getURI(XMLSymbols.PREFIX_XMLNS);
  +                fAttributeQName.uri = 
fNamespaceContext.getURI(XMLSymbols.PREFIX_XMLNS);
                   attributes.setName(i, fAttributeQName);
               }
               else if (aprefix != XMLSymbols.EMPTY_STRING) {
  -                fAttributeQName.uri = fNamespaceSupport.getURI(aprefix);
  +                fAttributeQName.uri = fNamespaceContext.getURI(aprefix);
                   if (fAttributeQName.uri == null) {
                       fErrorReporter.reportError(XMLMessageFormatter.XMLNS_DOMAIN,
                                                  "AttributePrefixUnbound",
  @@ -257,7 +246,7 @@
   
           // bind element
           String eprefix = element.prefix != null ? element.prefix : 
XMLSymbols.EMPTY_STRING;
  -        element.uri = fNamespaceSupport.getURI(eprefix);
  +        element.uri = fNamespaceContext.getURI(eprefix);
           if (element.uri != null) {
               element.prefix = eprefix;
           }
  @@ -269,17 +258,8 @@
               }
           }
   
  -        // end prefix mappings
  -        if (fDocumentHandler != null) {
  -            int count = fNamespaceSupport.getDeclaredPrefixCount();
  -            for (int i = count - 1; i >= 0; i--) {
  -                String prefix = fNamespaceSupport.getDeclaredPrefixAt(i);
  -                fDocumentHandler.endPrefixMapping(prefix, augs);
  -            }
  -        }
  -
           // pop context
  -        fNamespaceSupport.popContext();
  +        fNamespaceContext.popContext();
   
       } // endNamespaceScope(QName,boolean)
       
  
  
  
  1.125     +2 -46     
xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
  
  Index: XMLSchemaValidator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java,v
  retrieving revision 1.124
  retrieving revision 1.125
  diff -u -r1.124 -r1.125
  --- XMLSchemaValidator.java   11 Dec 2002 16:14:31 -0000      1.124
  +++ XMLSchemaValidator.java   16 Dec 2002 01:26:20 -0000      1.125
  @@ -663,29 +663,6 @@
       } // doctypeDecl(String,String,String)
   
       /**
  -     * The start of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     *
  -     * @param prefix The namespace prefix.
  -     * @param uri    The URI bound to the prefix.
  -     * @param augs     Additional information that may include infoset augmentations
  -     *
  -     * @throws XNIException Thrown by handler to signal an error.
  -     */
  -    public void startPrefixMapping(String prefix, String uri, Augmentations augs)
  -    throws XNIException {
  -        if (DEBUG) {
  -            System.out.println("startPrefixMapping("+prefix+","+uri+")");
  -        }
  -
  -        // call handlers
  -        if (fDocumentHandler != null) {
  -            fDocumentHandler.startPrefixMapping(prefix, uri, augs);
  -        }
  -
  -    } // startPrefixMapping(String,String)
  -
  -    /**
        * The start of an element.
        *
        * @param element    The name of the element.
  @@ -816,28 +793,7 @@
           }
       } // endElement(QName, Augmentations)
   
  -    /**
  -     * The end of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     *
  -     * @param prefix The namespace prefix.
  -     * @param augs     Additional information that may include infoset augmentations
  -     *
  -     * @throws XNIException Thrown by handler to signal an error.
  -     */
  -    public void endPrefixMapping(String prefix, Augmentations augs) throws 
XNIException {
  -
  -        if (DEBUG) {
  -            System.out.println("endPrefixMapping("+prefix+")");
  -        }
  -        // call handlers
  -        if (fDocumentHandler != null) {
  -            fDocumentHandler.endPrefixMapping(prefix, augs);
  -        }
  -
  -    } // endPrefixMapping(String)
  -
  -    /**
  +     /**
        * The start of a CDATA section.
        *
        * @param augs     Additional information that may include infoset augmentations
  
  
  
  1.2       +39 -1     
xml-xerces/java/src/org/apache/xerces/impl/xs/util/SimpleLocator.java
  
  Index: SimpleLocator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/util/SimpleLocator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SimpleLocator.java        18 Feb 2002 22:30:26 -0000      1.1
  +++ SimpleLocator.java        16 Dec 2002 01:26:20 -0000      1.2
  @@ -109,4 +109,42 @@
       public String getBaseSystemId() {
           return null;
       }
  +     /**
  +      * @see org.apache.xerces.xni.XMLLocator#setColumnNumber(int)
  +      */
  +     public void setColumnNumber(int col) {
  +        this.column = col;
  +    }
  +
  +     /**
  +      * @see org.apache.xerces.xni.XMLLocator#setLineNumber(int)
  +      */
  +     public void setLineNumber(int line) {
  +        this.line = line;
  +    }
  +
  +     /**
  +      * @see org.apache.xerces.xni.XMLResourceIdentifier#setBaseSystemId(String)
  +      */
  +     public void setBaseSystemId(String systemId) {}
  +
  +     /**
  +      * @see org.apache.xerces.xni.XMLResourceIdentifier#setExpandedSystemId(String)
  +      */
  +     public void setExpandedSystemId(String systemId) {
  +        esid = systemId;
  +    }
  +
  +     /**
  +      * @see org.apache.xerces.xni.XMLResourceIdentifier#setLiteralSystemId(String)
  +      */
  +     public void setLiteralSystemId(String systemId) {
  +        lsid = systemId;
  +    }
  +
  +     /**
  +      * @see org.apache.xerces.xni.XMLResourceIdentifier#setPublicId(String)
  +      */
  +     public void setPublicId(String publicId) {}
  +
   }
  
  
  
  1.78      +1 -28     
xml-xerces/java/src/org/apache/xerces/parsers/AbstractDOMParser.java
  
  Index: AbstractDOMParser.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/parsers/AbstractDOMParser.java,v
  retrieving revision 1.77
  retrieving revision 1.78
  diff -u -r1.77 -r1.78
  --- AbstractDOMParser.java    20 Nov 2002 20:55:39 -0000      1.77
  +++ AbstractDOMParser.java    16 Dec 2002 01:26:20 -0000      1.78
  @@ -900,33 +900,6 @@
       } // doctypeDecl(String,String,String)
   
       /**
  -     * The start of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     * 
  -     * @param prefix The namespace prefix.
  -     * @param uri    The URI bound to the prefix.
  -     * @param augs   Additional information that may include infoset augmentations
  -     *
  -     * @throws XNIException Thrown by handler to signal an error.
  -     */
  -    public void startPrefixMapping(String prefix, String uri, Augmentations augs)
  -        throws XNIException {
  -    } // startPrefixMapping(String,String)
  -
  -
  -    /**
  -     * The end of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     *
  -     * @param prefix The namespace prefix.
  -     * @param augs     Additional information that may include infoset augmentations
  -     *
  -     * @throws XNIException Thrown by handler to signal an error.
  -     */
  -    public void endPrefixMapping(String prefix, Augmentations augs) throws 
XNIException {
  -    } // endPrefixMapping(String)
  -
  -    /**
        * The start of an element. If the document specifies the start element
        * by using an empty tag, then the startElement method will immediately
        * be followed by the endElement method, with no intervening methods.
  
  
  
  1.35      +37 -51    
xml-xerces/java/src/org/apache/xerces/parsers/AbstractSAXParser.java
  
  Index: AbstractSAXParser.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/parsers/AbstractSAXParser.java,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- AbstractSAXParser.java    11 Dec 2002 16:14:31 -0000      1.34
  +++ AbstractSAXParser.java    16 Dec 2002 01:26:20 -0000      1.35
  @@ -186,6 +186,9 @@
   
       /** Document handler. */
       protected DocumentHandler fDocumentHandler;
  +    
  +    /** Namespace context */
  +    protected NamespaceContext fNamespaceContext;
   
       /** DTD handler. */
       protected org.xml.sax.DTDHandler fDTDHandler;
  @@ -263,7 +266,8 @@
       public void startDocument(XMLLocator locator, String encoding, 
                                 NamespaceContext namespaceContext, Augmentations augs)
           throws XNIException {
  -
  +        
  +        fNamespaceContext = namespaceContext;
           try {
               // SAX1
               if (fDocumentHandler != null) {
  @@ -373,32 +377,7 @@
   
       } // endEntity(String)
   
  -    /**
  -     * The start of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     *
  -     * @param prefix The namespace prefix.
  -     * @param uri    The URI bound to the prefix.
  -     * @param augs     Additional information that may include infoset augmentations
  -     *
  -     * @throws XNIException Thrown by handler to signal an error.
  -     */
  -    public void startPrefixMapping(String prefix, String uri, Augmentations augs)
  -        throws XNIException {
  -
  -        try {
  -            // SAX2
  -            if (fContentHandler != null) {
  -                fContentHandler.startPrefixMapping(prefix, uri);
  -            }
  -        }
  -        catch (SAXException e) {
  -            throw new XNIException(e);
  -        }
  -
  -    } // startPrefixMapping(String prefix, String uri)
  -
  -    /**
  +     /**
        * The start of an element. If the document specifies the start element
        * by using an empty tag, then the startElement method will immediately
        * be followed by the endElement method, with no intervening methods.
  @@ -423,6 +402,10 @@
   
               // SAX2
               if (fContentHandler != null) {
  +                
  +                // send prefix mapping events
  +                startNamespaceMapping();
  +                
                   fAugmentations = augs;
   
                   int len = attributes.getLength();
  @@ -551,6 +534,7 @@
                   String localpart = fNamespaces ? element.localpart : "";
                   fContentHandler.endElement(uri, localpart,
                                              element.rawname);
  +                endNamespaceMapping();
               }
           }
           catch (SAXException e) {
  @@ -559,29 +543,6 @@
   
       } // endElement(QName)
   
  -    /**
  -     * The end of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     *
  -     * @param prefix The namespace prefix.
  -     * @param augs     Additional information that may include infoset augmentations
  -     *
  -     * @throws XNIException Thrown by handler to signal an error.
  -     */
  -    public void endPrefixMapping(String prefix, Augmentations augs)  throws 
XNIException {
  -
  -        try {
  -            // SAX2
  -            if (fContentHandler != null) {
  -                fContentHandler.endPrefixMapping(prefix);
  -            }
  -        }
  -        catch (SAXException e) {
  -            throw new XNIException(e);
  -        }
  -
  -    } // endPrefixMapping(String)
  -
           /**
        * The start of a CDATA section.
        * @param augs     Additional information that may include infoset augmentations
  @@ -1855,6 +1816,31 @@
           return fLexicalHandler;
       } // getLexicalHandler():LexicalHandler
   
  +     /**
  +      * Send startPrefixMapping events
  +      */
  +     protected final void startNamespaceMapping() throws SAXException{
  +             int count = fNamespaceContext.getDeclaredPrefixCount();
  +             if (count > 0) {
  +                     String prefix = null;
  +                     for (int i = 0; i < count; i++) {
  +                             prefix = fNamespaceContext.getDeclaredPrefixAt(i);
  +                             fContentHandler.startPrefixMapping(prefix, 
  +                fNamespaceContext.getURI(prefix));
  +                     }
  +             }
  +     }
  +    /**
  +     * Send endPrefixMapping events
  +     */
  +     protected final void endNamespaceMapping() throws SAXException {
  +             int count = fNamespaceContext.getDeclaredPrefixCount();
  +             if (count > 0) {
  +                     for (int i = 0; i < count; i++) {
  +                     
fContentHandler.endPrefixMapping(fNamespaceContext.getDeclaredPrefixAt(i));
  +                     }
  +             }
  +     }
       //
       // XMLDocumentParser methods
       //
  
  
  
  1.16      +1 -27     
xml-xerces/java/src/org/apache/xerces/parsers/AbstractXMLDocumentParser.java
  
  Index: AbstractXMLDocumentParser.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/parsers/AbstractXMLDocumentParser.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- AbstractXMLDocumentParser.java    7 Dec 2002 00:25:52 -0000       1.15
  +++ AbstractXMLDocumentParser.java    16 Dec 2002 01:26:20 -0000      1.16
  @@ -196,20 +196,6 @@
       } // doctypeDecl(String,String,String)
   
       /**
  -     * The start of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     * 
  -     * @param prefix The namespace prefix.
  -     * @param uri    The URI bound to the prefix.
  -     * @param augs   Additional information that may include infoset augmentations
  -     *
  -     * @throws XNIException Thrown by handler to signal an error.
  -     */
  -    public void startPrefixMapping(String prefix, String uri, Augmentations augs)
  -        throws XNIException {
  -    } // startPrefixMapping(String,String)
  -
  -    /**
        * The start of an element. If the document specifies the start element
        * by using an empty tag, then the startElement method will immediately
        * be followed by the endElement method, with no intervening methods.
  @@ -278,18 +264,6 @@
        */
       public void endElement(QName element, Augmentations augs) throws XNIException {
       } // endElement(QName)
  -
  -    /**
  -     * The end of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     * 
  -     * @param prefix The namespace prefix.
  -     * @param augs   Additional information that may include infoset augmentations
  -     *
  -     * @throws XNIException Thrown by handler to signal an error.
  -     */
  -    public void endPrefixMapping(String prefix, Augmentations augs) throws 
XNIException {
  -    } // endPrefixMapping(String)
   
       /** 
        * The start of a CDATA section. 
  
  
  
  1.14      +1 -2      
xml-xerces/java/src/org/apache/xerces/parsers/BasicParserConfiguration.java
  
  Index: BasicParserConfiguration.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/parsers/BasicParserConfiguration.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- BasicParserConfiguration.java     24 Sep 2002 23:05:18 -0000      1.13
  +++ BasicParserConfiguration.java     16 Dec 2002 01:26:20 -0000      1.14
  @@ -68,7 +68,6 @@
   import org.apache.xerces.impl.msg.XMLMessageFormatter;
   import org.apache.xerces.util.ParserConfigurationSettings;
   import org.apache.xerces.util.SymbolTable;
  -import org.apache.xerces.util.NamespaceSupport;
   import org.apache.xerces.xni.XMLDocumentHandler;
   import org.apache.xerces.xni.XMLDTDHandler;
   import org.apache.xerces.xni.XMLDTDContentModelHandler;
  
  
  
  1.6       +7 -1      
xml-xerces/java/src/org/apache/xerces/util/ErrorHandlerWrapper.java
  
  Index: ErrorHandlerWrapper.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/util/ErrorHandlerWrapper.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ErrorHandlerWrapper.java  29 Jan 2002 01:15:18 -0000      1.5
  +++ ErrorHandlerWrapper.java  16 Dec 2002 01:26:21 -0000      1.6
  @@ -244,12 +244,18 @@
           final int fLineNumber = exception.getLineNumber();
           final int fColumnNumber = exception.getColumnNumber();
           XMLLocator location = new XMLLocator() {
  +            public void setPublicId(String id) {}
               public String getPublicId() { return fPublicId; }
  +            public void setExpandedSystemId( String id) {}
               public String getExpandedSystemId() { return fExpandedSystemId; }
  +            public void setBaseSystemId(String id) {}
               public String getBaseSystemId() { return null; }
  +            public void setLiteralSystemId(String id) {}
               public String getLiteralSystemId() { return null; }
               public int getColumnNumber() { return fColumnNumber; }
  +            public void setColumnNumber(int col) {}
               public int getLineNumber() { return fLineNumber; }
  +            public void setLineNumber(int line) {}
           };
           return new XMLParseException(location, exception.getMessage(),
                                        exception.getException());
  
  
  
  1.14      +98 -231   xml-xerces/java/src/org/apache/xerces/util/NamespaceSupport.java
  
  Index: NamespaceSupport.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/util/NamespaceSupport.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- NamespaceSupport.java     18 Oct 2002 02:22:05 -0000      1.13
  +++ NamespaceSupport.java     16 Dec 2002 01:26:21 -0000      1.14
  @@ -57,8 +57,10 @@
   
   package org.apache.xerces.util;
   
  +import java.util.Enumeration;
  +import java.util.NoSuchElementException;
  +
   import org.apache.xerces.xni.NamespaceContext;
  -import org.apache.xerces.util.XMLSymbols;
   
   /**
    * Namespace support for XML document handlers. This class doesn't 
  @@ -70,8 +72,7 @@
    *
    * @version $Id$
    */
  -public class NamespaceSupport 
  -    implements NamespaceContext {
  +public class NamespaceSupport implements NamespaceContext {
   
       //
       // Data
  @@ -106,7 +107,9 @@
   
       /** The current context. */
       protected int fCurrentContext;
  -
  +    
  +    protected String[] fPrefixes = new String[16];
  +    
       //
       // Constructors
       //
  @@ -121,32 +124,23 @@
        */
       public NamespaceSupport(NamespaceContext context) {
           pushContext();
  -        while (context != null) {
  -            int count = context.getDeclaredPrefixCount();
  -            for (int i = 0; i < count; i++) {
  -                String prefix = context.getDeclaredPrefixAt(i);
  -                String uri = getURI(prefix);
  -                if (uri == null) {
  -                    uri = context.getURI(prefix);
  -                    declarePrefix(prefix, uri);
  -                }
  -            }
  -            context = context.getParentContext();
  +        // copy declaration in the context
  +        Enumeration enum = context.getAllPrefixes();
  +        while (enum.hasMoreElements()){
  +            String prefix = (String)enum.nextElement();
  +            String uri = context.getURI(prefix);
  +            declarePrefix(prefix, uri);
           }
  -    } // <init>(NamespaceContext)
  +      } // <init>(NamespaceContext)
  +
   
       //
       // Public methods
       //
  -
  -    // context management
       
  -    /**
  -     * Reset this Namespace support object for reuse.
  -     *
  -     * <p>It is necessary to invoke this method before reusing the
  -     * Namespace support object for a new session.</p>
  -     */
  +     /**
  +      * @see org.apache.xerces.xni.NamespaceContext#reset()
  +      */
       public void reset() {
   
           // reset namespace and context info
  @@ -164,20 +158,10 @@
   
       } // reset(SymbolTable)
   
  -    /**
  -     * Start a new Namespace context.
  -     * <p>
  -     * Normally, you should push a new context at the beginning
  -     * of each XML element: the new context will automatically inherit
  -     * the declarations of its parent context, but it will also keep
  -     * track of which declarations were made within this context.
  -     * <p>
  -     * The Namespace support object always starts with a base context
  -     * already in force: in this context, only the "xml" prefix is
  -     * declared.
  -     *
  -     * @see #popContext
  -     */
  +
  +     /**
  +      * @see org.apache.xerces.xni.NamespaceContext#pushContext()
  +      */
       public void pushContext() {
   
           // extend the array, if necessary
  @@ -193,49 +177,17 @@
       } // pushContext()
   
   
  -    /**
  -     * Revert to the previous Namespace context.
  -     * <p>
  -     * Normally, you should pop the context at the end of each
  -     * XML element.  After popping the context, all Namespace prefix
  -     * mappings that were previously in force are restored.
  -     * <p>
  -     * You must not attempt to declare additional Namespace
  -     * prefixes after popping a context, unless you push another
  -     * context first.
  -     *
  -     * @see #pushContext
  -     */
  +     /**
  +      * @see org.apache.xerces.xni.NamespaceContext#popContext()
  +      */
       public void popContext() {
           fNamespaceSize = fContext[fCurrentContext--];
       } // popContext()
   
  -    // operations within a context.
  -
  -    /**
  -     * Declare a Namespace prefix.
  -     * <p>
  -     * This method declares a prefix in the current Namespace
  -     * context; the prefix will remain in force until this context
  -     * is popped, unless it is shadowed in a descendant context.
  -     * <p>
  -     * To declare a default Namespace, use the empty string.  The
  -     * prefix must not be "xml" or "xmlns".
  -     * <p>
  -     * Note that you must <em>not</em> declare a prefix after
  -     * you've pushed and popped another Namespace.
  -     *
  -     * @param prefix The prefix to declare, or null for the empty
  -     *        string.
  -     * @param uri The Namespace URI to associate with the prefix.
  -     *
  -     * @return true if the prefix was legal, false otherwise
  -     *
  -     * @see #getURI
  -     * @see #getDeclaredPrefixAt
  -     */
  +     /**
  +      * @see org.apache.xerces.xni.NamespaceContext#declarePrefix(String, String)
  +      */
       public boolean declarePrefix(String prefix, String uri) {
  -
           // ignore "xml" and "xmlns" prefixes
           if (prefix == XMLSymbols.PREFIX_XML || prefix == XMLSymbols.PREFIX_XMLNS) {
               return false;
  @@ -270,21 +222,11 @@
   
       } // declarePrefix(String,String):boolean
   
  -    /**
  -     * Look up a prefix and get the currently-mapped Namespace URI.
  -     * <p>
  -     * This method looks up the prefix in the current context.
  -     * Use the empty string ("") for the default Namespace.
  -     *
  -     * @param prefix The prefix to look up.
  -     *
  -     * @return The associated Namespace URI, or null if the prefix
  -     *         is undeclared in this context.
  -     *
  -     * @see #getDeclaredPrefixAt
  -     */
  +     /**
  +      * @see org.apache.xerces.xni.NamespaceContext#getURI(String)
  +      */
       public String getURI(String prefix) {
  -
  +        
           // find prefix in current context
           for (int i = fNamespaceSize; i > 0; i -= 2) {
               if (fNamespace[i - 2] == prefix) {
  @@ -298,19 +240,9 @@
       } // getURI(String):String
   
   
  -
  -    /**
  -     * Look up a namespace URI and get one of the mapped prefix.
  -     * <p>
  -     * This method looks up the namespace URI in the current context.
  -     *
  -     * @param uri The namespace URI to look up.
  -     *
  -     * @return one of the associated prefixes, or null if the uri
  -     *         does not map to any prefix.
  -     *
  -     * @see #getPrefix
  -     */
  +     /**
  +      * @see org.apache.xerces.xni.NamespaceContext#getPrefix(String)
  +      */
       public String getPrefix(String uri) {
   
           // find uri in current context
  @@ -324,146 +256,81 @@
           // uri not found
           return null;
   
  -    } // getURI(String):String
  +    } // getPrefix(String):String
   
   
  -    /**
  -     * Return a count of all prefixes currently declared, including
  -     * the default prefix if bound.
  -     */
  +     /**
  +      * @see org.apache.xerces.xni.NamespaceContext#getDeclaredPrefixCount()
  +      */
       public int getDeclaredPrefixCount() {
           return (fNamespaceSize - fContext[fCurrentContext]) / 2;
       } // getDeclaredPrefixCount():int
   
  -    /** 
  -     * Returns the prefix at the specified index in the current context.
  -     */
  +     /**
  +      * @see org.apache.xerces.xni.NamespaceContext#getDeclaredPrefixAt(int)
  +      */
       public String getDeclaredPrefixAt(int index) {
           return fNamespace[fContext[fCurrentContext] + index * 2];
       } // getDeclaredPrefixAt(int):String
   
  -    /**
  -     * Returns the parent namespace context or null if there is no
  -     * parent context. The total depth of the namespace contexts 
  -     * matches the element depth in the document.
  -     * <p>
  -     * <strong>Note:</strong> This method <em>may</em> return the same 
  -     * NamespaceContext object reference. The caller is responsible for
  -     * saving the declared prefix mappings before calling this method.
  -     */
  -    public NamespaceContext getParentContext() {
  -        if (fCurrentContext == 1) {
  -            return null;
  +     /**
  +      * @see org.apache.xerces.xni.NamespaceContext#getAllPrefixes()
  +      */
  +     public Enumeration getAllPrefixes() {
  +        int count = 0;
  +        if (fPrefixes.length < (fNamespace.length/2)) {
  +            // resize prefix array          
  +            String[] prefixes = new String[fNamespaceSize];
  +            fPrefixes = prefixes;
           }
  -        return new Context(fCurrentContext - 1);
  -    } // getParentContext():NamespaceContext
  -
  -    //
  -    // Classes
  -    //
  -
  -    /**
  -     * Namespace context information. The current context is always
  -     * handled directly by the NamespaceSupport class. This class is
  -     * used when a user queries the parent context.
  -     *
  -     * @author Andy Clark, IBM
  -     */
  -    final class Context 
  -        implements NamespaceContext {
  -    
  -        //
  -        // Data
  -        //
  -
  -        /** The current context. */
  -        private int fCurrentContext;
  -
  -        //
  -        // Constructors
  -        //
  -
  -        /** 
  -         * Constructs a new context. Once constructed, this object will
  -         * be re-used when the application calls <code>getParentContext</code.
  -         */
  -        public Context(int currentContext) {
  -            setCurrentContext(currentContext);
  -        } // <init>(int)
  -
  -        //
  -        // Public methods
  -        //
  -
  -        /** Sets the current context. */
  -        public void setCurrentContext(int currentContext) {
  -            fCurrentContext = currentContext;
  -        } // setCurrentContext(int)
  -
  -        //
  -        // NamespaceContext methods
  -        //
  -
  -        /**
  -         * Look up a prefix and get the currently-mapped Namespace URI.
  -         * <p>
  -         * This method looks up the prefix in the current context.
  -         * Use the empty string ("") for the default Namespace.
  -         *
  -         * @param prefix The prefix to look up.
  -         *
  -         * @return The associated Namespace URI, or null if the prefix
  -         *         is undeclared in this context.
  -         *
  -         * @see #getPrefix
  -         */
  -        public String getURI(String prefix) {
  -
  -            // find prefix in current context
  -            for (int i = fNamespaceSize; i > 0; i -= 2) {
  -                if (fNamespace[i - 2] == prefix) {
  -                    return fNamespace[i - 1];
  -                }
  +        String prefix = null;
  +        boolean unique = true;
  +        for (int i = 2; i < (fNamespaceSize-2); i += 2) {
  +            prefix = fNamespace[i + 2];            
  +            for (int k=0;k<count;k++){
  +                if (fPrefixes[k]==prefix){
  +                    unique = false;
  +                    break;
  +                }               
               }
  -
  -            // prefix not found
  -            return null;
  -
  -        } // getURI(String):String
  -
  -        /**
  -         * Return a count of all prefixes currently declared, including
  -         * the default prefix if bound.
  -         */
  -        public int getDeclaredPrefixCount() {
  -            return (fNamespaceSize - fContext[fCurrentContext]) / 2;
  -        } // getDeclaredPrefixCount():int
  -
  -        /** 
  -         * Returns the prefix at the specified index in the current context.
  -         */
  -        public String getDeclaredPrefixAt(int index) {
  -            return fNamespace[fContext[fCurrentContext] + index * 2];
  -        } // getDeclaredPrefixAt(int):String
  -
  -        /**
  -         * Returns the parent namespace context or null if there is no
  -         * parent context. The total depth of the namespace contexts 
  -         * matches the element depth in the document.
  -         * <p>
  -         * <strong>Note:</strong> This method <em>may</em> return the same 
  -         * NamespaceContext object reference. The caller is responsible for
  -         * saving the declared prefix mappings before calling this method.
  -         */
  -        public NamespaceContext getParentContext() {
  -            if (fCurrentContext == 1) {
  -                return null;
  +            if (unique){
  +                fPrefixes[count++] = prefix;
               }
  -            setCurrentContext(fCurrentContext - 1);
  -            return this;
  -        } // getParentContext():NamespaceContext
  -
  -    } // class Context
  +            unique = true;
  +        }
  +             return new Prefixes(fPrefixes, count);
  +     }
  +    
  +    final class Prefixes implements Enumeration {
  +        private String[] prefixes;
  +        private int counter = 0;
  +        private int size = 0;
  +               
  +             /**
  +              * Constructor for Prefixes.
  +              */
  +             public Prefixes(String [] prefixes, int size) {
  +                     this.prefixes = prefixes;
  +            this.size = size;
  +             }
  +
  +       /**
  +              * @see java.util.Enumeration#hasMoreElements()
  +              */
  +             public boolean hasMoreElements() {           
  +                     return (counter< size);
  +             }
  +
  +             /**
  +              * @see java.util.Enumeration#nextElement()
  +              */
  +             public Object nextElement() {
  +            if (counter< size){
  +                return fPrefixes[counter++];
  +            }
  +                     throw new NoSuchElementException("Illegal access to Namespace 
prefixes enumeration.");
  +             }
   
  +}
   
   } // class NamespaceSupport
  
  
  
  1.9       +100 -12   xml-xerces/java/src/org/apache/xerces/xni/NamespaceContext.java
  
  Index: NamespaceContext.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/xni/NamespaceContext.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- NamespaceContext.java     24 Sep 2002 23:05:18 -0000      1.8
  +++ NamespaceContext.java     16 Dec 2002 01:26:21 -0000      1.9
  @@ -57,8 +57,17 @@
   
   package org.apache.xerces.xni;
   
  +import java.util.Enumeration;
  +
   /**
    * Represents an interface to query namespace information.
  + * <p>
  + * The prefix and namespace must be identical references for equal strings, thus
  + * each string should be internalized (@see String.intern()) 
  + * or added to the <code>SymbolTable</code>
  + *
  + * @see <a href="../../../../../xerces2/org/apache/xerces/util/SymbolTable.html">
  + * org.apache.xerces.util.SymbolTable</a>
    *
    * @author Andy Clark, IBM
    *
  @@ -86,20 +95,92 @@
       //
       // NamespaceContext methods
       //
  +        
  +    /**
  +     * Start a new Namespace context.
  +     * <p>
  +     * A new context should be pushed at the beginning
  +     * of each XML element: the new context will automatically inherit
  +     * the declarations of its parent context, but it will also keep
  +     * track of which declarations were made within this context.
  +     * <p>
  +     *
  +     * @see #popContext
  +     */
  +    public void pushContext();
  +
  +   /**
  +     * Revert to the previous Namespace context.
  +     * <p>
  +     * The context should be popped at the end of each
  +     * XML element.  After popping the context, all Namespace prefix
  +     * mappings that were previously in force are restored.
  +     * <p>
  +     * Users must not attempt to declare additional Namespace
  +     * prefixes after popping a context, unless you push another
  +     * context first.
  +     *
  +     * @see #pushContext
  +     */
  +    public void popContext();
  +
  +    /**
  +     * Declare a Namespace prefix.
  +     * <p>
  +     * This method declares a prefix in the current Namespace
  +     * context; the prefix will remain in force until this context
  +     * is popped, unless it is shadowed in a descendant context.
  +     * <p>
  +     * Note that to declare a default Namespace, use the empty string.  
  +     * The prefixes "xml" and "xmlns" can't be rebound.
  +     * <p>
  +     * Note that you must <em>not</em> declare a prefix after
  +     * you've pushed and popped another Namespace.
  +     *
  +     * @param prefix The prefix to declare, or null for the empty
  +     *        string. 
  +     * @param uri The Namespace URI to associate with the prefix.
  +     *
  +     * @return true if the prefix was legal, false otherwise
  +     *
  +     * @see #getURI
  +     * @see #getDeclaredPrefixAt
  +     */
  +    public boolean declarePrefix(String prefix, String uri);
       
  +
       /**
        * Look up a prefix and get the currently-mapped Namespace URI.
        * <p>
  -     * This method looks up the prefix in the current context.
  +     * This method looks up the prefix in the current context. If no mapping 
  +     * is found, this methods will continue lookup in the parent context(s).
        * Use the empty string ("") for the default Namespace.
        *
  -     * @param prefix The prefix to look up.
  +     * @param prefix The prefix to look up. 
        *
        * @return The associated Namespace URI, or null if the prefix
        *         is undeclared in this context.
        */
       public String getURI(String prefix);
  -
  +    
  +    /**
  +     * Look up a namespace URI and get one of the mapped prefix.
  +     * <p>
  +     * This method looks up the namespace URI in the current context.
  +     * If more than one prefix is currently mapped to the same URI, 
  +     * this method will make an arbitrary selection
  +     * If no mapping is found, this methods will continue lookup in the 
  +     * parent context(s).
  +     *
  +     * @param uri The namespace URI to look up.
  +     *
  +     * @return One of the associated prefixes, or null if the uri
  +     *         does not map to any prefix.
  +     *
  +     * @see #getPrefix
  +     */
  +    public String getPrefix(String uri);
  +    
       /**
        * Return a count of locally declared prefixes, including
        * the default prefix if bound.
  @@ -111,15 +192,22 @@
        */
       public String getDeclaredPrefixAt(int index);
   
  +     /**
  +      * Return an enumeration of all prefixes whose declarations are active 
  +     * in the current context. This includes declarations from parent contexts 
  +     * that have not been overridden.
  +      * @return Enumeration
  +      */
  +    public Enumeration getAllPrefixes();
  +    
       /**
  -     * Returns the parent namespace context or null if there is no
  -     * parent context. The total depth of the namespace contexts 
  -     * matches the element depth in the document.
  -     * <p>
  -     * <strong>Note:</strong> This method <em>may</em> return the same 
  -     * NamespaceContext object reference. The caller is responsible for
  -     * saving the declared prefix mappings before calling this method.
  +     * Reset this Namespace support object for reuse.
  +     *
  +     * <p>It is necessary to invoke this method before reusing the
  +     * Namespace support object for a new session.</p>
        */
  -    public NamespaceContext getParentContext();
  +    public void reset();
  +    
  +
   
   } // interface NamespaceContext
  
  
  
  1.6       +1 -29     
xml-xerces/java/src/org/apache/xerces/xni/XMLDocumentFragmentHandler.java
  
  Index: XMLDocumentFragmentHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/xni/XMLDocumentFragmentHandler.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XMLDocumentFragmentHandler.java   29 Jan 2002 01:15:19 -0000      1.5
  +++ XMLDocumentFragmentHandler.java   16 Dec 2002 01:26:21 -0000      1.6
  @@ -196,21 +196,6 @@
           throws XNIException;
   
       /**
  -     * The start of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     * 
  -     * @param prefix The namespace prefix.
  -     * @param uri    The URI bound to the prefix.
  -     * @param augmentations Additional information that may include infoset
  -     *                      augmentations.
  -     *
  -     * @throws XNIException Thrown by handler to signal an error.
  -     */
  -    public void startPrefixMapping(String prefix, String uri,
  -                                   Augmentations augmentations)
  -        throws XNIException;
  -
  -    /**
        * The start of an element.
        * 
        * @param element    The name of the element.
  @@ -276,19 +261,6 @@
        * @throws XNIException Thrown by handler to signal an error.
        */
       public void endElement(QName element, Augmentations augmentations) 
  -        throws XNIException;
  -
  -    /**
  -     * The end of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     * 
  -     * @param prefix The namespace prefix.
  -     * @param augmentations Additional information that may include infoset
  -     *                      augmentations.
  -     *
  -     * @throws XNIException Thrown by handler to signal an error.
  -     */
  -    public void endPrefixMapping(String prefix, Augmentations augmentations) 
           throws XNIException;
   
       /** 
  
  
  
  1.10      +1 -27     
xml-xerces/java/src/org/apache/xerces/xni/XMLDocumentHandler.java
  
  Index: XMLDocumentHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/xni/XMLDocumentHandler.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- XMLDocumentHandler.java   25 Sep 2002 20:13:51 -0000      1.9
  +++ XMLDocumentHandler.java   16 Dec 2002 01:26:21 -0000      1.10
  @@ -174,20 +174,6 @@
           throws XNIException;
   
       /**
  -     * The start of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     * @deprecated Use <code>xni.NamespaceContext</code> in 
<code>startDocument()</code>.
  -     * @param prefix The namespace prefix.
  -     * @param uri    The URI bound to the prefix.
  -     * @param augs   Additional information that may include infoset augmentations
  -     *               
  -     * @exception XNIException
  -     *                   Thrown by handler to signal an error.
  -     */
  -    public void startPrefixMapping(String prefix, String uri, Augmentations augs)
  -        throws XNIException;
  -
  -    /**
        * The start of an element.
        * 
        * @param element    The name of the element.
  @@ -306,18 +292,6 @@
        *                   Thrown by handler to signal an error.
        */
       public void endElement(QName element, Augmentations augs) throws XNIException;
  -
  -    /**
  -     * The end of a namespace prefix mapping. This method will only be
  -     * called when namespace processing is enabled.
  -     * 
  -     * @param prefix The namespace prefix.
  -     * @param augs   Additional information that may include infoset augmentations
  -     * @deprecated Use <code>xni.NamespaceContext</code> in 
<code>startDocument()</code>.             
  -     * @exception XNIException
  -     *                   Thrown by handler to signal an error.
  -     */
  -    public void endPrefixMapping(String prefix, Augmentations augs) throws 
XNIException;
   
       /**
        * The start of a CDATA section.
  
  
  
  1.5       +8 -2      xml-xerces/java/src/org/apache/xerces/xni/XMLLocator.java
  
  Index: XMLLocator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/xni/XMLLocator.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XMLLocator.java   29 Jan 2002 01:15:19 -0000      1.4
  +++ XMLLocator.java   16 Dec 2002 01:26:21 -0000      1.5
  @@ -71,10 +71,16 @@
       //
       // XMLLocator methods
       //
  +    
  +    /** Sets the line number. */
  +    public void setLineNumber(int line);
   
       /** Returns the line number. */
       public int getLineNumber();
  -
  +  
  +    /** Sets the column number. */
  +    public void setColumnNumber(int col);
  +  
       /** Returns the column number. */
       public int getColumnNumber();
   
  
  
  
  1.2       +17 -4     
xml-xerces/java/src/org/apache/xerces/xni/XMLResourceIdentifier.java
  
  Index: XMLResourceIdentifier.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/xni/XMLResourceIdentifier.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XMLResourceIdentifier.java        17 Jan 2002 23:54:59 -0000      1.1
  +++ XMLResourceIdentifier.java        16 Dec 2002 01:26:21 -0000      1.2
  @@ -66,16 +66,29 @@
    */
   
   public interface XMLResourceIdentifier {
  +    
  +    /** Sets the public identifier. */
  +    public void setPublicId(String publicId);
   
       /** Returns the public identifier. */
       public String getPublicId();
  -
  +    
  +    /** Sets the expanded system identifier. */
  +    public void setExpandedSystemId(String systemId);
  +    
       /** Returns the expanded system identifier. */
       public String getExpandedSystemId();
  -
  +    
  +    /** Sets the literal system identifier. */
  +    public void setLiteralSystemId(String systemId);
  +     
       /** Returns the literal system identifier. */
       public String getLiteralSystemId();
  -
  +    
  +    /** Setsthe base URI against which the literal SystemId is to be 
  +        resolved.*/
  +    public void setBaseSystemId(String systemId); 
  +    
       /** <p> Returns the base URI against which the literal SystemId is to be 
           resolved. </p> */
       public String getBaseSystemId();
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to