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 2001/10/23 21:05:02 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/impl/v2/datatypes NOTATIONDatatypeValidator.java QNameDatatypeValidator.java
sandygao 01/10/23 12:05:02
Modified: java/src/org/apache/xerces/impl/v2 SchemaValidator.java
XSAttributeChecker.java XSDAbstractTraverser.java
XSDHandler.java
java/src/org/apache/xerces/impl/v2/datatypes
NOTATIONDatatypeValidator.java
QNameDatatypeValidator.java
Log:
qname prefix resolution:
1. add checking for unfound prefixes;
2. add comments at places where more prefix checking needs to be done;
3. removed comments about prefix resolution that are not applicable anymore.
Revision Changes Path
1.38 +1 -6 xml-xerces/java/src/org/apache/xerces/impl/v2/SchemaValidator.java
Index: SchemaValidator.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/v2/SchemaValidator.java,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- SchemaValidator.java 2001/10/22 16:58:14 1.37
+++ SchemaValidator.java 2001/10/23 19:05:01 1.38
@@ -115,7 +115,7 @@
* @author Andy Clark, IBM
* @author Jeffrey Rodriguez IBM
*
- * @version $Id: SchemaValidator.java,v 1.37 2001/10/22 16:58:14 sandygao Exp $
+ * @version $Id: SchemaValidator.java,v 1.38 2001/10/23 19:05:01 sandygao Exp $
*/
public class SchemaValidator
implements XMLComponent, XMLDocumentFilter,
@@ -1350,9 +1350,6 @@
prefix = fSymbolTable.addSymbol(xsiType.substring(0,colonptr));
localpart = xsiType.substring(colonptr+1);
}
- // REVISIT: if we take the null approach (instead of ""),
- // we need to chech the retrned value from getURI
- // to see whether a binding is found.
String uri = fNamespaceSupport.getURI(prefix);
typeName = new QName(prefix, localpart, xsiType, uri);
} catch (InvalidDatatypeValueException e) {
@@ -1531,8 +1528,6 @@
attrValue = XSAttributeChecker.normalize(attrValue, attDV.getWSFacet());
Object actualValue = null;
try {
- // REVISIT: use XSSimpleTypeDecl.ValidateContext to replace null
- // actualValue = attDV.validate(attrValue, null);
attDV.validate(attrValue, fValidationState);
} catch (InvalidDatatypeValueException idve) {
reportSchemaError("cvc-attribute.3", new Object[]{element.rawname, fTempQName.rawname, attrValue});
1.35 +2 -1 xml-xerces/java/src/org/apache/xerces/impl/v2/XSAttributeChecker.java
Index: XSAttributeChecker.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/v2/XSAttributeChecker.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- XSAttributeChecker.java 2001/10/22 22:19:52 1.34
+++ XSAttributeChecker.java 2001/10/23 19:05:02 1.35
@@ -89,7 +89,7 @@
* - use symbol table instead of many hashtables
*
* @author Sandy Gao, IBM
- * @version $Id: XSAttributeChecker.java,v 1.34 2001/10/22 22:19:52 sandygao Exp $
+ * @version $Id: XSAttributeChecker.java,v 1.35 2001/10/23 19:05:02 sandygao Exp $
*/
public class XSAttributeChecker {
@@ -1548,6 +1548,7 @@
return sb.toString();
}
+ // REVISIT: should remove this method once the DVs return compiled value
protected QName resolveQName (String attrVal, XSDocumentInfo currSchema) {
SchemaNamespaceSupport nsSupport = currSchema.fNamespaceSupport;
String prefix = fSchemaHandler.EMPTY_STRING;
1.39 +4 -2 xml-xerces/java/src/org/apache/xerces/impl/v2/XSDAbstractTraverser.java
Index: XSDAbstractTraverser.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/v2/XSDAbstractTraverser.java,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- XSDAbstractTraverser.java 2001/10/23 16:49:59 1.38
+++ XSDAbstractTraverser.java 2001/10/23 19:05:02 1.39
@@ -77,7 +77,7 @@
* @author Elena Litani, IBM
* @author Rahul Srivastava, Sun Microsystems Inc.
*
- * @version $Id: XSDAbstractTraverser.java,v 1.38 2001/10/23 16:49:59 elena Exp $
+ * @version $Id: XSDAbstractTraverser.java,v 1.39 2001/10/23 19:05:02 sandygao Exp $
*/
abstract class XSDAbstractTraverser {
@@ -245,12 +245,14 @@
}
String uriStr = schemaDoc.fNamespaceSupport.getURI(prefix);
+ if (prefix != fSchemaHandler.EMPTY_STRING && uriStr == null) {
+ reportGenericSchemaError("Cannot resolve the prefix of the NOTATION value '"+enumVal+"'");
+ }
fQName.setValues(prefix, localpart, null, uriStr );
XSNotationDecl notation = (XSNotationDecl)fSchemaHandler.getGlobalDecl(schemaDoc, XSDHandler.NOTATION_TYPE , fQName);
if (notation == null) {
reportGenericSchemaError("Notation '" + localpart +
"' not found in the grammar "+ uriStr);
-
}
enumVal = (uriStr!=null)?(uriStr+","+localpart):localpart;
1.54 +8 -1 xml-xerces/java/src/org/apache/xerces/impl/v2/XSDHandler.java
Index: XSDHandler.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/v2/XSDHandler.java,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -r1.53 -r1.54
--- XSDHandler.java 2001/10/23 17:44:16 1.53
+++ XSDHandler.java 2001/10/23 19:05:02 1.54
@@ -97,7 +97,7 @@
* schema, other grammars may be constructed as a side-effect.
*
* @author Neil Graham, IBM
- * @version $Id: XSDHandler.java,v 1.53 2001/10/23 17:44:16 sandygao Exp $
+ * @version $Id: XSDHandler.java,v 1.54 2001/10/23 19:05:02 sandygao Exp $
*/
class XSDHandler {
@@ -1268,6 +1268,13 @@
// to by a in the current SchemaNamespaceSupport object, and returns this
// information in the form (nsURI,b) suitable for lookups in the global
// decl Hashtables.
+ // REVISIT: should have it return QName, instead of String. this would
+ // save lots of string concatenation time. we can use
+ // QName#equals() to compare two QNames, and use QName directly
+ // as a key to the SymbolHash.
+ // And when the DV's are ready to return compiled values from
+ // validate() method, we should just call QNameDV.validate()
+ // in this method.
private String findQName(String name, XSDocumentInfo schemaDoc) {
SchemaNamespaceSupport currNSMap = schemaDoc.fNamespaceSupport;
int colonPtr = name.indexOf(':');
1.7 +10 -3 xml-xerces/java/src/org/apache/xerces/impl/v2/datatypes/NOTATIONDatatypeValidator.java
Index: NOTATIONDatatypeValidator.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/v2/datatypes/NOTATIONDatatypeValidator.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- NOTATIONDatatypeValidator.java 2001/10/22 21:22:37 1.6
+++ NOTATIONDatatypeValidator.java 2001/10/23 19:05:02 1.7
@@ -72,7 +72,7 @@
* @author Elena Litani
* @author Jeffrey Rodriguez-
* @author Mark Swinkles - List Validation refactoring
- * @version $Id: NOTATIONDatatypeValidator.java,v 1.6 2001/10/22 21:22:37 sandygao Exp $
+ * @version $Id: NOTATIONDatatypeValidator.java,v 1.7 2001/10/23 19:05:02 sandygao Exp $
*/
public class NOTATIONDatatypeValidator extends AbstractStringValidator {
@@ -152,7 +152,7 @@
//
if (state !=null && (fFacetsDefined & DatatypeValidator.FACET_ENUMERATION) != 0 &&
(fEnumeration != null)) {
- String prefix = state.getSymbol("");
+ String prefix = "";
String localpart = content;
int colonptr = content.indexOf(":");
if (colonptr > 0) {
@@ -161,7 +161,14 @@
}
String uriStr = state.getURI(state.getSymbol(prefix));
- String fullName = (uriStr!=null)?(uriStr+","+localpart):localpart;
+ String fullName = null;
+ if (uriStr == null) {
+ if (prefix.length() != 0)
+ throw new InvalidDatatypeValueException("Cannot resolve the prefix of the NOTATION value '"+content+"'");
+ fullName = localpart;
+ } else {
+ fullName = uriStr+","+localpart;
+ }
if (fEnumeration.contains( fullName ) == false)
throw new InvalidDatatypeValueException("Value '"+content+"' must be one of "+fEnumeration);
}
1.5 +5 -2 xml-xerces/java/src/org/apache/xerces/impl/v2/datatypes/QNameDatatypeValidator.java
Index: QNameDatatypeValidator.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/v2/datatypes/QNameDatatypeValidator.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- QNameDatatypeValidator.java 2001/10/16 17:21:39 1.4
+++ QNameDatatypeValidator.java 2001/10/23 19:05:02 1.5
@@ -77,7 +77,7 @@
*
* @author Jeffrey Rodriguez
* @author Mark Swinkles - List Validation refactoring
- * @version $Id: QNameDatatypeValidator.java,v 1.4 2001/10/16 17:21:39 elena Exp $
+ * @version $Id: QNameDatatypeValidator.java,v 1.5 2001/10/23 19:05:02 sandygao Exp $
*/
public class QNameDatatypeValidator extends AbstractStringValidator {
@@ -100,13 +100,16 @@
String msg = getErrorString(
DatatypeMessageProvider.fgMessageKeys[DatatypeMessageProvider.ILLEGAL_STRING_FACET],
new Object[] { key });
- throw new InvalidDatatypeFacetException(msg);
+ throw new InvalidDatatypeFacetException(msg);
}
protected void checkValueSpace (String content) throws InvalidDatatypeValueException {
// check 3.2.18.c0 must: "NCName:NCName"
+ // REVISIT: we need to check whether the prefix of the content is
+ // resolvable. not sure where to do it, checkValueSpace()
+ // or checkContent() or validate().
try {
int posColon = content.indexOf(':');
if (posColon >= 0)
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org