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]