mrglavas    2004/08/13 08:46:37

  Modified:    java/src/org/apache/xerces/xinclude XIncludeHandler.java
  Log:
  Sharing the symbol table with child pipelines. Also, SAX is expecting

  internalized strings for all XML names since the string-interning

  feature is always on. We weren't doing that for attributes added

  during fixup: xml:base, xml:lang and xmlns:*. This should now be fixed.
  
  Revision  Changes    Path
  1.32      +41 -9     
xml-xerces/java/src/org/apache/xerces/xinclude/XIncludeHandler.java
  
  Index: XIncludeHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/xinclude/XIncludeHandler.java,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- XIncludeHandler.java      13 Aug 2004 02:02:17 -0000      1.31
  +++ XIncludeHandler.java      13 Aug 2004 15:46:36 -0000      1.32
  @@ -31,6 +31,7 @@
   import org.apache.xerces.util.IntStack;
   import org.apache.xerces.util.ParserConfigurationSettings;
   import org.apache.xerces.util.SecurityManager;
  +import org.apache.xerces.util.SymbolTable;
   import org.apache.xerces.util.URI;
   import org.apache.xerces.util.XMLAttributesImpl;
   import org.apache.xerces.util.XMLResourceIdentifierImpl;
  @@ -135,22 +136,22 @@
       public final static String CURRENT_BASE_URI = "currentBaseURI";
   
       // used for adding [base URI] attributes
  -    public final static String XINCLUDE_BASE = "base";
  +    public final static String XINCLUDE_BASE = "base".intern();
       public final static QName XML_BASE_QNAME =
           new QName(
               XMLSymbols.PREFIX_XML,
               XINCLUDE_BASE,
  -            XMLSymbols.PREFIX_XML + ":" + XINCLUDE_BASE,
  +            (XMLSymbols.PREFIX_XML + ":" + XINCLUDE_BASE).intern(),
               NamespaceContext.XML_URI);
       
       // used for adding [language] attributes
  -    public final static String XINCLUDE_LANG = "lang";
  +    public final static String XINCLUDE_LANG = "lang".intern();
       public final static QName XML_LANG_QNAME = 
           new QName(
  -                XMLSymbols.PREFIX_XML,
  -                XINCLUDE_LANG,
  -                XMLSymbols.PREFIX_XML + ":" + XINCLUDE_LANG,
  -                NamespaceContext.XML_URI);
  +            XMLSymbols.PREFIX_XML,
  +            XINCLUDE_LANG,
  +            (XMLSymbols.PREFIX_XML + ":" + XINCLUDE_LANG).intern(),
  +            NamespaceContext.XML_URI);
   
       public final static QName NEW_NS_ATTR_QNAME =
           new QName(
  @@ -186,6 +187,10 @@
       protected static final String ALLOW_UE_AND_NOTATION_EVENTS =
           Constants.SAX_FEATURE_PREFIX
               + Constants.ALLOW_DTD_EVENTS_AFTER_ENDDTD_FEATURE;
  +    
  +    /** Property identifier: symbol table. */
  +    protected static final String SYMBOL_TABLE = 
  +        Constants.XERCES_PROPERTY_PREFIX + Constants.SYMBOL_TABLE_PROPERTY;
   
       /** Property identifier: error reporter. */
       protected static final String ERROR_REPORTER =
  @@ -244,6 +249,7 @@
   
       protected XMLLocator fDocLocation;
       protected XIncludeNamespaceSupport fNamespaceContext;
  +    protected SymbolTable fSymbolTable;
       protected XMLErrorReporter fErrorReporter;
       protected XMLEntityResolver fEntityResolver;
       protected SecurityManager fSecurityManager;
  @@ -368,6 +374,21 @@
           }
           catch (XMLConfigurationException e) {
           }
  +        
  +        // Get symbol table.
  +        try {
  +            SymbolTable value =
  +                (SymbolTable)componentManager.getProperty(SYMBOL_TABLE);
  +            if (value != null) {
  +                fSymbolTable = value;
  +                if (fChildConfig != null) {
  +                    fChildConfig.setProperty(SYMBOL_TABLE, value);
  +                }
  +            }
  +        }
  +        catch (XMLConfigurationException e) {
  +            fSymbolTable = null;
  +        }
   
           // Get error reporter.
           try {
  @@ -523,6 +544,13 @@
        */
       public void setProperty(String propertyId, Object value)
           throws XMLConfigurationException {
  +        if (propertyId.equals(SYMBOL_TABLE)) {
  +            fSymbolTable = (SymbolTable)value;
  +            if (fChildConfig != null) {
  +                fChildConfig.setProperty(propertyId, value);
  +            }
  +            return;
  +        }
           if (propertyId.equals(ERROR_REPORTER)) {
               setErrorReporter((XMLErrorReporter)value);
               if (fChildConfig != null) {
  @@ -1327,7 +1355,8 @@
                           ObjectFactory.findClassLoader(),
                           true);
   
  -                // use the same error reporter, entity resolver, and security 
manager.
  +                // use the same symbol table, error reporter, entity resolver, and 
security manager.
  +                if (fSymbolTable != null) fChildConfig.setProperty(SYMBOL_TABLE, 
fSymbolTable);
                   if (fErrorReporter != null) 
fChildConfig.setProperty(ERROR_REPORTER, fErrorReporter);
                   if (fEntityResolver != null) 
fChildConfig.setProperty(ENTITY_RESOLVER, fEntityResolver);
                   if (fSecurityManager != null) 
fChildConfig.setProperty(SECURITY_MANAGER, fSecurityManager);
  @@ -1689,6 +1718,9 @@
                           QName ns = (QName)NEW_NS_ATTR_QNAME.clone();
                           ns.localpart = prefix;
                           ns.rawname += prefix;
  +                        ns.rawname = (fSymbolTable != null) ? 
  +                            fSymbolTable.addSymbol(ns.rawname) :
  +                            ns.rawname.intern();
                           attributes.addAttribute(
                               ns,
                               XMLSymbols.fCDATASymbol,
  
  
  

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

Reply via email to