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]