sandygao    2002/08/29 19:53:05

  Modified:    java/src/org/apache/xerces/impl/dv/xs QNameDV.java
               java/src/org/apache/xerces/impl/xs SchemaSymbols.java
                        XMLSchemaLoader.java XMLSchemaValidator.java
                        XSModelImpl.java
               java/src/org/apache/xerces/impl/xs/traversers
                        XSAttributeChecker.java
                        XSDAttributeGroupTraverser.java
                        XSDGroupTraverser.java XSDHandler.java
  Log:
  Taking advantage of the fact that Strings internalized using symbol table and
  String#intern() can be compared by reference.
  
  Revision  Changes    Path
  1.4       +4 -4      xml-xerces/java/src/org/apache/xerces/impl/dv/xs/QNameDV.java
  
  Index: QNameDV.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/QNameDV.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- QNameDV.java      18 Jul 2002 20:48:43 -0000      1.3
  +++ QNameDV.java      30 Aug 2002 02:53:04 -0000      1.4
  @@ -72,7 +72,7 @@
    */
   public class QNameDV extends TypeValidator {
   
  -    private static final String EMPTY_STRING = "";
  +    private static final String EMPTY_STRING = "".intern();
   
       public short getAllowedFacets() {
           return (XSSimpleTypeDecl.FACET_LENGTH | XSSimpleTypeDecl.FACET_MINLENGTH | 
XSSimpleTypeDecl.FACET_MAXLENGTH | XSSimpleTypeDecl.FACET_PATTERN | 
XSSimpleTypeDecl.FACET_ENUMERATION | XSSimpleTypeDecl.FACET_WHITESPACE);
  @@ -89,11 +89,11 @@
               prefix = context.getSymbol(content.substring(0,colonptr));
               localpart = content.substring(colonptr+1);
           } else {
  -            prefix = context.getSymbol(EMPTY_STRING);
  +            prefix = EMPTY_STRING;
               localpart = content;
           }
   
  -        // both prefix (if any) and localpart must be valid NCName
  +        // both prefix (if any) a nd localpart must be valid NCName
           if (prefix.length() > 0 && !XMLChar.isValidNCName(prefix))
               throw new InvalidDatatypeValueException("cvc-datatype-valid.1.2.1", new 
Object[]{content, "QName"});
   
  
  
  
  1.6       +1 -3      xml-xerces/java/src/org/apache/xerces/impl/xs/SchemaSymbols.java
  
  Index: SchemaSymbols.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/SchemaSymbols.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SchemaSymbols.java        13 Aug 2002 22:57:10 -0000      1.5
  +++ SchemaSymbols.java        30 Aug 2002 02:53:04 -0000      1.6
  @@ -67,8 +67,6 @@
    */
   public final class SchemaSymbols {
   
  -    public static final String EMPTY_STRING                   = "";
  -
       // strings that's not added to the schema symbol table, because they
       // are not symbols in the schema document.
       // the validator can choose to add them by itself.
  
  
  
  1.8       +4 -6      
xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java
  
  Index: XMLSchemaLoader.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- XMLSchemaLoader.java      4 Jul 2002 08:40:24 -0000       1.7
  +++ XMLSchemaLoader.java      30 Aug 2002 02:53:04 -0000      1.8
  @@ -74,6 +74,7 @@
   import org.apache.xerces.impl.Constants;
   import org.apache.xerces.impl.XMLEntityManager;
   import org.apache.xerces.util.SymbolTable;
  +import org.apache.xerces.util.XMLSymbols;
   import org.apache.xerces.util.DefaultErrorHandler;
   
   import java.util.Locale;
  @@ -103,9 +104,6 @@
   
   public class XMLSchemaLoader implements XMLGrammarLoader {
   
  -    // given that we internalize strings, no point in adding this to SymbolTable 
explicitly
  -    public static final String EMPTY_STRING = "";
  -
       // Feature identifiers:
   
       /** Feature identifier: schema full checking*/
  @@ -469,7 +467,7 @@
           if(fExternalNoNSSchema != null) {
               LocationArray noNs = new LocationArray();
               noNs.addLocation(fExternalNoNSSchema);
  -            locationPairs.put(EMPTY_STRING, noNs);
  +            locationPairs.put(XMLSymbols.EMPTY_STRING, noNs);
           }
           SchemaGrammar grammar = loadSchema(desc, source, locationPairs); 
           if(grammar != null && fGrammarPool != null) {
  @@ -509,7 +507,7 @@
               desc.fromInstance()) {
               // use empty string as the key for absent namespace
               String namespace = desc.getTargetNamespace();
  -            String ns = namespace == null ? EMPTY_STRING : namespace;
  +            String ns = namespace == null ? XMLSymbols.EMPTY_STRING : namespace;
               // get the location hint for that namespace
               LocationArray tempLA = (LocationArray)locationPairs.get(ns);
               if(tempLA != null) 
  
  
  
  1.89      +2 -2      
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.88
  retrieving revision 1.89
  diff -u -r1.88 -r1.89
  --- XMLSchemaValidator.java   27 Aug 2002 19:45:02 -0000      1.88
  +++ XMLSchemaValidator.java   30 Aug 2002 02:53:04 -0000      1.89
  @@ -2226,7 +2226,7 @@
           }
           if (nsLocation != null) {
               fNoNamespaceLocationArray.addLocation(nsLocation);
  -            fLocationPairs.put(XMLSchemaLoader.EMPTY_STRING, 
fNoNamespaceLocationArray);
  +            fLocationPairs.put(XMLSymbols.EMPTY_STRING, fNoNamespaceLocationArray);
           }
   
       }//storeLocations
  
  
  
  1.5       +3 -3      xml-xerces/java/src/org/apache/xerces/impl/xs/XSModelImpl.java
  
  Index: XSModelImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XSModelImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XSModelImpl.java  17 Jun 2002 18:41:45 -0000      1.4
  +++ XSModelImpl.java  30 Aug 2002 02:53:04 -0000      1.5
  @@ -59,6 +59,7 @@
   
   import org.apache.xerces.impl.xs.psvi.*;
   import org.apache.xerces.util.SymbolHash;
  +import org.apache.xerces.util.XMLSymbols;
   import org.apache.xerces.impl.xs.util.*;
   import java.util.Vector;
   
  @@ -418,9 +419,8 @@
           return null;
       }
   
  -    private static final String EMPTY_STRING = "";
       private static final String null2EmptyString(String str) {
  -        return str == null ? EMPTY_STRING : str;
  +        return str == null ? XMLSymbols.EMPTY_STRING : str;
       }
       
   } // class XSModelImpl
  
  
  
  1.17      +4 -4      
xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSAttributeChecker.java
  
  Index: XSAttributeChecker.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSAttributeChecker.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- XSAttributeChecker.java   13 Aug 2002 22:57:10 -0000      1.16
  +++ XSAttributeChecker.java   30 Aug 2002 02:53:05 -0000      1.17
  @@ -1135,7 +1135,7 @@
                           // kludge to handle chameleon includes/redefines...
                           if (oneAttr.dvIndex == DT_QNAME) {
                               QName qname = (QName)avalue;
  -                            if(qname.prefix == fSchemaHandler.EMPTY_STRING && 
qname.uri == null && schemaDoc.fIsChameleonSchema)
  +                            if(qname.prefix == XMLSymbols.EMPTY_STRING && qname.uri 
== null && schemaDoc.fIsChameleonSchema)
                                   qname.uri = schemaDoc.fTargetNamespace;
                           }
                           attrValues[oneAttr.valueIndex] = avalue;
  @@ -1370,7 +1370,7 @@
                       String token = t.nextToken ();
                       QName qname = (QName)fExtraDVs[DT_QNAME].validate(token, 
schemaDoc.fValidationContext, null);
                       // kludge to handle chameleon includes/redefines...
  -                    if(qname.prefix == fSchemaHandler.EMPTY_STRING && qname.uri == 
null && schemaDoc.fIsChameleonSchema)
  +                    if(qname.prefix == XMLSymbols.EMPTY_STRING && qname.uri == null 
&& schemaDoc.fIsChameleonSchema)
                           qname.uri = schemaDoc.fTargetNamespace;
                       memberType.addElement(qname);
                   }
  @@ -1672,7 +1672,7 @@
               if (rawname == XMLSymbols.PREFIX_XMLNS || rawname.startsWith("xmlns:")) 
{
                   prefix = null;
                   if (rawname.length() == 5)
  -                    prefix = fSchemaHandler.EMPTY_STRING;
  +                    prefix = XMLSymbols.EMPTY_STRING;
                   else if (rawname.charAt(5) == ':')
                       prefix = fSymbolTable.addSymbol(DOMUtil.getLocalName(sattr));
                   if (prefix != null) {
  
  
  
  1.8       +3 -2      
xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDAttributeGroupTraverser.java
  
  Index: XSDAttributeGroupTraverser.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDAttributeGroupTraverser.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- XSDAttributeGroupTraverser.java   7 May 2002 15:54:27 -0000       1.7
  +++ XSDAttributeGroupTraverser.java   30 Aug 2002 02:53:05 -0000      1.8
  @@ -60,6 +60,7 @@
   import org.apache.xerces.impl.xs.SchemaSymbols;
   import org.apache.xerces.impl.xs.XSAttributeGroupDecl;
   import org.apache.xerces.util.DOMUtil;
  +import org.apache.xerces.util.XMLSymbols;
   import org.apache.xerces.xni.QName;
   import org.w3c.dom.Element;
   
  @@ -178,7 +179,7 @@
           // check for restricted redefine:
           XSAttributeGroupDecl redefinedAttrGrp = 
(XSAttributeGroupDecl)fSchemaHandler.getGrpOrAttrGrpRedefinedByRestriction(
                   XSDHandler.ATTRIBUTEGROUP_TYPE, 
  -                new QName(fSchemaHandler.EMPTY_STRING, nameAttr, nameAttr, 
schemaDoc.fTargetNamespace), 
  +                new QName(XMLSymbols.EMPTY_STRING, nameAttr, nameAttr, 
schemaDoc.fTargetNamespace), 
                   schemaDoc, elmNode); 
           if(redefinedAttrGrp != null) {
               String err = attrGrp.validRestrictionOf(redefinedAttrGrp);
  
  
  
  1.14      +3 -2      
xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDGroupTraverser.java
  
  Index: XSDGroupTraverser.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDGroupTraverser.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- XSDGroupTraverser.java    16 May 2002 18:25:55 -0000      1.13
  +++ XSDGroupTraverser.java    30 Aug 2002 02:53:05 -0000      1.14
  @@ -63,6 +63,7 @@
   import org.apache.xerces.impl.xs.XSGroupDecl;
   import org.apache.xerces.impl.xs.XSMessageFormatter;
   import org.apache.xerces.util.DOMUtil;
  +import org.apache.xerces.util.XMLSymbols;
   import org.apache.xerces.impl.xs.util.XInt;
   import org.apache.xerces.xni.QName;
   import org.w3c.dom.Element;
  @@ -210,7 +211,7 @@
               // store groups redefined by restriction in the grammar so
               // that we can get at them at full-schema-checking time.
               Object redefinedGrp = 
fSchemaHandler.getGrpOrAttrGrpRedefinedByRestriction(XSDHandler.GROUP_TYPE,
  -                new QName(fSchemaHandler.EMPTY_STRING, strNameAttr, strNameAttr, 
schemaDoc.fTargetNamespace),
  +                new QName(XMLSymbols.EMPTY_STRING, strNameAttr, strNameAttr, 
schemaDoc.fTargetNamespace),
                   schemaDoc, elmNode);
               if(redefinedGrp != null) {
                   // store in grammar
  
  
  
  1.54      +7 -16     
xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java
  
  Index: XSDHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- XSDHandler.java   13 Aug 2002 22:57:10 -0000      1.53
  +++ XSDHandler.java   30 Aug 2002 02:53:05 -0000      1.54
  @@ -145,13 +145,6 @@
       // as unlikely as possible to cause collisions.
       public final static String REDEF_IDENTIFIER = "_fn3dktizrknc9pi";
   
  -    // please note the difference between SchemaHandler.EMPTY_STRING and
  -    // SchemaSymbols.EMPTY_STRING:
  -    //   the one in SchemaHandler is only for namespace binding purpose, it's
  -    //   used as a legal prefix, and it's added to the current symbol table;
  -    //   while the one in SchemaSymbols is for general purpose: just empty.
  -    public String EMPTY_STRING;
  -
       //
       //protected data that can be accessable by any traverser
       // stores <notation> decl
  @@ -200,10 +193,10 @@
   
       // convinence methods
       private String null2EmptyString(String ns) {
  -        return ns == null ? EMPTY_STRING : ns;
  +        return ns == null ? XMLSymbols.EMPTY_STRING : ns;
       }
       private String emptyString2Null(String ns) {
  -        return ns == EMPTY_STRING ? null : ns;
  +        return ns == XMLSymbols.EMPTY_STRING ? null : ns;
       }
   
       // This vector stores strings which are combinations of the
  @@ -1206,7 +1199,7 @@
           }
           if (nameToFind == null) return null;
           int commaPos = nameToFind.indexOf(",");
  -        QName qNameToFind = new QName(EMPTY_STRING, 
nameToFind.substring(commaPos+1),
  +        QName qNameToFind = new QName(XMLSymbols.EMPTY_STRING, 
nameToFind.substring(commaPos+1),
               nameToFind.substring(commaPos), (commaPos == 0)? null : 
nameToFind.substring(0, commaPos));
           Object retObj = getGlobalDecl(currSchema, type, qNameToFind, elmNode);
           if(retObj == null) {
  @@ -1483,8 +1476,6 @@
           fSymbolTable = symbolTable;
           fGrammarPool = grammarPool;
   
  -        EMPTY_STRING = fSymbolTable.addSymbol(XMLSymbols.EMPTY_STRING);
  -
           resetSchemaParserErrorHandler();
           
       } // reset(ErrorReporter, EntityResolver, SymbolTable, XMLGrammarPool)
  @@ -1783,12 +1774,12 @@
       private String findQName(String name, XSDocumentInfo schemaDoc) {
           SchemaNamespaceSupport currNSMap = schemaDoc.fNamespaceSupport;
           int colonPtr = name.indexOf(':');
  -        String prefix = EMPTY_STRING;
  +        String prefix = XMLSymbols.EMPTY_STRING;
           if (colonPtr > 0)
               prefix = name.substring(0, colonPtr);
           String uri = currNSMap.getURI(fSymbolTable.addSymbol(prefix));
           String localpart = (colonPtr == 0)?name:name.substring(colonPtr+1);
  -        if (prefix == this.EMPTY_STRING && uri == null && 
schemaDoc.fIsChameleonSchema)
  +        if (prefix == XMLSymbols.EMPTY_STRING && uri == null && 
schemaDoc.fIsChameleonSchema)
               uri = schemaDoc.fTargetNamespace;
           if (uri == null)
               return ","+localpart;
  @@ -1816,7 +1807,7 @@
                   if (ref.length() != 0) {
                       String processedRef = findQName(ref, schemaDoc);
                       if (originalQName.equals(processedRef)) {
  -                        String prefix = EMPTY_STRING;
  +                        String prefix = XMLSymbols.EMPTY_STRING;
                           String localpart = ref;
                           int colonptr = ref.indexOf(":");
                           if (colonptr > 0) {
  
  
  

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

Reply via email to