You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by sa...@apache.org on 2002/10/24 00:57:05 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/impl/xs/traversers XSAttributeChecker.java XSDWildcardTraverser.java
sandygao 2002/10/23 15:57:05
Modified: java/src/org/apache/xerces/impl/xs/traversers
XSAttributeChecker.java XSDWildcardTraverser.java
Log:
Fixing a bug in traversing wildcards: a static value was updated when multiple
wildcards are traversed, if none of them specifies the "namespace" attribute.
Revision Changes Path
1.20 +17 -13 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.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- XSAttributeChecker.java 4 Oct 2002 17:33:19 -0000 1.19
+++ XSAttributeChecker.java 23 Oct 2002 22:57:05 -0000 1.20
@@ -135,6 +135,7 @@
public static final int ATTIDX_MIXED = ATTIDX_COUNT++;
public static final int ATTIDX_NAME = ATTIDX_COUNT++;
public static final int ATTIDX_NAMESPACE = ATTIDX_COUNT++;
+ public static final int ATTIDX_NAMESPACE_LIST = ATTIDX_COUNT++;
public static final int ATTIDX_NILLABLE = ATTIDX_COUNT++;
public static final int ATTIDX_PROCESSCONTENTS = ATTIDX_COUNT++;
public static final int ATTIDX_PUBLIC = ATTIDX_COUNT++;
@@ -163,6 +164,9 @@
private static final XInt INT_ANY_STRICT = fXIntPool.getXInt(XSWildcardDecl.PC_STRICT);
private static final XInt INT_ANY_LAX = fXIntPool.getXInt(XSWildcardDecl.PC_LAX);
private static final XInt INT_ANY_SKIP = fXIntPool.getXInt(XSWildcardDecl.PC_SKIP);
+ private static final XInt INT_ANY_ANY = fXIntPool.getXInt(XSWildcardDecl.NSCONSTRAINT_ANY);
+ private static final XInt INT_ANY_LIST = fXIntPool.getXInt(XSWildcardDecl.NSCONSTRAINT_LIST);
+ private static final XInt INT_ANY_NOT = fXIntPool.getXInt(XSWildcardDecl.NSCONSTRAINT_NOT);
private static final XInt INT_USE_OPTIONAL = fXIntPool.getXInt(SchemaSymbols.USE_OPTIONAL);
private static final XInt INT_USE_REQUIRED = fXIntPool.getXInt(SchemaSymbols.USE_REQUIRED);
private static final XInt INT_USE_PROHIBITED = fXIntPool.getXInt(SchemaSymbols.USE_PROHIBITED);
@@ -387,7 +391,7 @@
allAttrs[ATT_NAMESPACE_D] = new OneAttr(SchemaSymbols.ATT_NAMESPACE,
DT_NAMESPACE,
ATTIDX_NAMESPACE,
- new XSWildcardDecl());
+ INT_ANY_ANY);
allAttrs[ATT_NAMESPACE_N] = new OneAttr(SchemaSymbols.ATT_NAMESPACE,
DT_ANYURI,
ATTIDX_NAMESPACE,
@@ -1163,7 +1167,7 @@
}
}
else {
- attrValues[oneAttr.valueIndex] = validate(attrName, attrVal, oneAttr.dvIndex, schemaDoc);
+ attrValues[oneAttr.valueIndex] = validate(attrValues, attrName, attrVal, oneAttr.dvIndex, schemaDoc);
}
} catch (InvalidDatatypeValueException ide) {
reportSchemaError ("s4s-att-invalid-value",
@@ -1216,7 +1220,7 @@
return attrValues;
}
- private Object validate(String attr, String ivalue, int dvIndex,
+ private Object validate(Object[] attrValues, String attr, String ivalue, int dvIndex,
XSDocumentInfo schemaDoc) throws InvalidDatatypeValueException {
if (ivalue == null)
return null;
@@ -1371,7 +1375,7 @@
retValue = INT_UNBOUNDED;
} else {
try {
- retValue = validate(attr, value, DT_NONNEGINT, schemaDoc);
+ retValue = validate(attrValues, attr, value, DT_NONNEGINT, schemaDoc);
} catch (NumberFormatException e) {
throw new InvalidDatatypeValueException("cvc-datatype-valid.1.2.3", new Object[]{value, "(nonNegativeInteger | unbounded)"});
}
@@ -1417,18 +1421,19 @@
break;
case DT_NAMESPACE:
// namespace = ((##any | ##other) | List of (anyURI | (##targetNamespace | ##local)) )
- XSWildcardDecl wildcard = new XSWildcardDecl();
if (value.equals(SchemaSymbols.ATTVAL_TWOPOUNDANY)) {
// ##any
+ retValue = INT_ANY_ANY;
} else if (value.equals(SchemaSymbols.ATTVAL_TWOPOUNDOTHER)) {
// ##other
- wildcard.fType = XSWildcardDecl.NSCONSTRAINT_NOT;
- wildcard.fNamespaceList = new String[2];
- wildcard.fNamespaceList[0] = schemaDoc.fTargetNamespace;
- wildcard.fNamespaceList[1] = null;
+ retValue = INT_ANY_NOT;
+ String[] list = new String[2];
+ list[0] = schemaDoc.fTargetNamespace;
+ list[1] = null;
+ attrValues[ATTIDX_NAMESPACE_LIST] = list;
} else {
// list
- wildcard.fType = XSWildcardDecl.NSCONSTRAINT_LIST;
+ retValue = INT_ANY_LIST;
fNamespaceList.removeAllElements();
@@ -1463,10 +1468,9 @@
// convert the vector to an array
int num = fNamespaceList.size();
String[] list = new String[num];
- wildcard.fNamespaceList = list;
fNamespaceList.copyInto(list);
+ attrValues[ATTIDX_NAMESPACE_LIST] = list;
}
- retValue = wildcard;
break;
case DT_PROCESSCONTENTS:
// processContents = (lax | skip | strict)
1.8 +8 -4 xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDWildcardTraverser.java
Index: XSDWildcardTraverser.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDWildcardTraverser.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- XSDWildcardTraverser.java 4 Jul 2002 21:38:34 -0000 1.7
+++ XSDWildcardTraverser.java 23 Oct 2002 22:57:05 -0000 1.8
@@ -183,10 +183,14 @@
SchemaGrammar grammar) {
//get all attributes
- XSWildcardDecl wildcard = (XSWildcardDecl) attrValues[XSAttributeChecker.ATTIDX_NAMESPACE];
- XInt processContentsAttr = (XInt) attrValues[XSAttributeChecker.ATTIDX_PROCESSCONTENTS];
-
+ XSWildcardDecl wildcard = new XSWildcardDecl();
+ // namespace type
+ XInt namespaceTypeAttr = (XInt) attrValues[XSAttributeChecker.ATTIDX_NAMESPACE];
+ wildcard.fType = namespaceTypeAttr.shortValue();
+ // namespace list
+ wildcard.fNamespaceList = (String[])attrValues[XSAttributeChecker.ATTIDX_NAMESPACE_LIST];
// process contents
+ XInt processContentsAttr = (XInt) attrValues[XSAttributeChecker.ATTIDX_PROCESSCONTENTS];
wildcard.fProcessContents = processContentsAttr.shortValue();
//check content
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org