You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by mu...@apache.org on 2011/03/22 05:24:36 UTC
svn commit: r1084065 - in
/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl:
msg/XMLSchemaMessages.properties xs/XMLAssertPsychopathXPath2Impl.java
xs/XSDAssertionValidator.java xs/util/XSTypeHelper.java
Author: mukulg
Date: Tue Mar 22 04:24:36 2011
New Revision: 1084065
URL: http://svn.apache.org/viewvc?rev=1084065&view=rev
Log:
committing few improvements to schema 1.1 assertion evaluations.
the changes in this commit are following,
1) considering assertions from base type of a complexType (with extension derivation), where the base type has variety simpleType->list.
2) few minor improvements to error messages for assertions.
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertPsychopathXPath2Impl.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSDAssertionValidator.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/XSTypeHelper.java
Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties?rev=1084065&r1=1084064&r2=1084065&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties Tue Mar 22 04:24:36 2011
@@ -105,9 +105,9 @@
cvc-type.3.1.1 = cvc-type.3.1.1: Element ''{0}'' is a simple type, so it cannot have attributes, excepting those whose namespace name is identical to ''http://www.w3.org/2001/XMLSchema-instance'' and whose [local name] is one of ''type'', ''nil'', ''schemaLocation'' or ''noNamespaceSchemaLocation''. However, the attribute, ''{1}'' was found.
cvc-type.3.1.2 = cvc-type.3.1.2: Element ''{0}'' is a simple type, so it must have no element information item [children].
cvc-type.3.1.3 = cvc-type.3.1.3: The value ''{1}'' of element ''{0}'' is not valid.
- cvc-assertion.3.13.4.1 = cvc-assertion.3.13.4.1: Assertion evaluation (''{1}'') for element ''{0}'' with type ''{2}'' did not succeed. {3}
+ cvc-assertion.3.13.4.1 = cvc-assertion.3.13.4.1: Assertion evaluation (''{1}'') for element ''{0}'' on schema type ''{2}'' did not succeed. {3}
cvc-assertion.3.13.4.1-failure-mesg = cvc-assertion.3.13.4.1-failure-mesg: {0} {1}
- cvc-assertions-valid-context = cvc-assertions-valid-context: Assertion evaluation (''{1}'') for element ''{0}'' with type ''{2}'' did not succeed (undefined context). {3}
+ cvc-assertions-valid-context = cvc-assertions-valid-context: Assertion evaluation (''{1}'') for element ''{0}'' on schema type ''{2}'' did not succeed (undefined context). {3}
cvc-assertions-valid-union-elem = cvc-assertions-valid-union-elem: Value ''{0}'' is not facet-valid with respect to the specified assertions, on type ''{2}'' on element ''{1}''.
cvc-assertions-valid-union-attr = cvc-assertions-valid-union-attr: Value ''{0}'' is not facet-valid with respect to the specified assertions, on type ''{3}'' on attribute ''{2}'/@'{1}''.
cvc-xpath.3.13.4.2a = cvc-xpath.3.13.4.2a: Assertion XPath expression (''{0}'') on the schema type ''{1}'' couldn''t compile successfully.
Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertPsychopathXPath2Impl.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertPsychopathXPath2Impl.java?rev=1084065&r1=1084064&r2=1084065&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertPsychopathXPath2Impl.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertPsychopathXPath2Impl.java Tue Mar 22 04:24:36 2011
@@ -384,6 +384,12 @@ public class XMLAssertPsychopathXPath2Im
else {
simpleTypeDefn = (XSSimpleTypeDefinition) xsTypeDefn;
}
+ ElementPSVI elemPSVI = (ElementPSVI) augs.getItem(Constants.ELEMENT_PSVI);
+ XSComplexTypeDefinition complexTypeDef = (XSComplexTypeDefinition)elemPSVI.getTypeDefinition();
+ if (XSTypeHelper.isComplexTypeDerivedFromSTListByExt(complexTypeDef)) {
+ // reassign value to simple type instance
+ simpleTypeDefn = (XSSimpleTypeDefinition)complexTypeDef.getBaseType();
+ }
final boolean isTypeDerivedFromList = ((XSSimpleType) simpleTypeDefn.getBaseType()).getVariety() == XSSimpleType.VARIETY_LIST;
final boolean isTypeDerivedFromUnion = ((XSSimpleType) simpleTypeDefn.getBaseType()).getVariety() == XSSimpleType.VARIETY_UNION;
if (simpleTypeDefn.getVariety() == XSSimpleTypeDefinition.VARIETY_ATOMIC) {
@@ -396,7 +402,7 @@ public class XMLAssertPsychopathXPath2Im
}
else if (simpleTypeDefn.getVariety() == XSSimpleTypeDefinition.VARIETY_LIST) {
// evaluating assertions for "simpleType -> list"
- evaluateAssertionOnSTListValue(element, value, assertImpl, false, simpleTypeDefn, isTypeDerivedFromList);
+ evaluateAssertionOnSTListValue(element, value, assertImpl, false, simpleTypeDefn.getItemType(), isTypeDerivedFromList);
}
else if (((Boolean) augs.getItem("ASSERT_PROC_NEEDED_FOR_UNION")).booleanValue()) {
// evaluating assertions for "simpleType -> union"
@@ -406,9 +412,9 @@ public class XMLAssertPsychopathXPath2Im
}
}
// evaluate assertions on itemType of xs:list
- XSSimpleTypeDefinition attrItemType = simpleTypeDefn.getItemType();
- if (isTypeDerivedFromList && attrItemType != null) {
- evaluateAssertsFromItemTypeOfSTList(element, attrItemType, value);
+ XSSimpleTypeDefinition listItemType = simpleTypeDefn.getItemType();
+ if (isTypeDerivedFromList && listItemType != null) {
+ evaluateAssertsFromItemTypeOfSTList(element, listItemType, value);
}
}
}
@@ -944,12 +950,12 @@ public class XMLAssertPsychopathXPath2Im
String value = assertError.getValue();
XSTypeDefinition typeDef = assertImpl.getTypeDefinition();
- String typeNameStrAnnotation = "";
- if (typeDef != null) {
- typeNameStrAnnotation = (typeDef.getName() != null) ? typeDef.getName() : "#anonymous";
+ String typeNameStr = "";
+ if (typeDef instanceof XSSimpleTypeDefinition) {
+ typeNameStr = ((XSSimpleTypeDecl)typeDef).getTypeName();
}
else {
- typeNameStrAnnotation = "#anonymous";
+ typeNameStr = ((XSComplexTypeDecl)typeDef).getTypeName();
}
String elemErrorAnnotation = element.rawname;
@@ -978,15 +984,15 @@ public class XMLAssertPsychopathXPath2Im
message = message + ".";
}
if (key.equals("cvc-assertions-valid-context")) {
- message = "Assertion failed (undefined context) for schema type '" + typeNameStrAnnotation + "'. " + message;
+ message = "Assertion failed (undefined context) for schema type '" + typeNameStr + "'. " + message;
}
else {
- message = "Assertion failed for schema type '" + typeNameStrAnnotation + "'. " + message;
+ message = "Assertion failed for schema type '" + typeNameStr + "'. " + message;
}
fXmlSchemaValidator.reportSchemaError("cvc-assertion.3.13.4.1-failure-mesg", new Object[] {message, listAssertErrMessage});
}
else {
- fXmlSchemaValidator.reportSchemaError(key, new Object[] {elemErrorAnnotation, assertImpl.getTest().getXPath().toString(), typeNameStrAnnotation, listAssertErrMessage});
+ fXmlSchemaValidator.reportSchemaError(key, new Object[] {elemErrorAnnotation, assertImpl.getTest().getXPath().toString(), typeNameStr, listAssertErrMessage});
}
} // reportAssertionsError
Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSDAssertionValidator.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSDAssertionValidator.java?rev=1084065&r1=1084064&r2=1084065&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSDAssertionValidator.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSDAssertionValidator.java Tue Mar 22 04:24:36 2011
@@ -182,14 +182,24 @@ public class XSDAssertionValidator {
}
}
- // add assertion facets from "complexType -> simpleContent -> restriction"
+ // add assertion facets from complexType -> simpleContent. few assertions are already available in complexType model object,
+ // and few others are retrieved here.
XSSimpleTypeDefinition simpleContentType = complexTypeDef.getSimpleType();
- if (simpleContentType != null && complexTypeDef.getDerivationMethod() == XSConstants.DERIVATION_RESTRICTION) {
- Vector simpleContentAsserts = XSTypeHelper.getAssertsFromSimpleType(simpleContentType);
- for (int assertIdx = 0; assertIdx < simpleContentAsserts.size(); assertIdx++) {
- XSAssert simpleContentAssert = (XSAssert) simpleContentAsserts.get(assertIdx);
- complexTypeAsserts.addXSObject(simpleContentAssert);
- }
+ if (simpleContentType != null) {
+ if (complexTypeDef.getDerivationMethod() == XSConstants.DERIVATION_RESTRICTION) {
+ // add assertions for complexType -> simpleContent -> restriction cases
+ Vector simpleContentAsserts = XSTypeHelper.getAssertsFromSimpleType(simpleContentType);
+ for (int assertIdx = 0; assertIdx < simpleContentAsserts.size(); assertIdx++) {
+ complexTypeAsserts.addXSObject((XSAssert) simpleContentAsserts.get(assertIdx));
+ }
+ }
+ else if (XSTypeHelper.isComplexTypeDerivedFromSTListByExt(complexTypeDef)) {
+ // add assertions from the list->itemType of base schema simple type
+ Vector baseItemTypeAsserts = XSTypeHelper.getAssertsFromSimpleType(((XSSimpleTypeDefinition)complexTypeDef.getBaseType()).getItemType());
+ for (int assertIdx = 0; assertIdx < baseItemTypeAsserts.size(); assertIdx++) {
+ complexTypeAsserts.addXSObject((XSAssert) baseItemTypeAsserts.get(assertIdx));
+ }
+ }
}
Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/XSTypeHelper.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/XSTypeHelper.java?rev=1084065&r1=1084064&r2=1084065&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/XSTypeHelper.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/XSTypeHelper.java Tue Mar 22 04:24:36 2011
@@ -31,6 +31,8 @@ import org.apache.xerces.impl.xs.SchemaS
import org.apache.xerces.impl.xs.XSMessageFormatter;
import org.apache.xerces.util.XMLChar;
import org.apache.xerces.xni.NamespaceContext;
+import org.apache.xerces.xs.XSComplexTypeDefinition;
+import org.apache.xerces.xs.XSConstants;
import org.apache.xerces.xs.XSMultiValueFacet;
import org.apache.xerces.xs.XSObjectList;
import org.apache.xerces.xs.XSSimpleTypeDefinition;
@@ -206,4 +208,16 @@ public class XSTypeHelper {
} // isListContainsType
+
+ /*
+ * Find if a complexType is derived by extension from a simpleType->list component.
+ */
+ public static boolean isComplexTypeDerivedFromSTListByExt(XSComplexTypeDefinition complexTypeDef) {
+
+ return complexTypeDef.getDerivationMethod() == XSConstants.DERIVATION_EXTENSION &&
+ complexTypeDef.getBaseType() instanceof XSSimpleTypeDefinition &&
+ ((XSSimpleTypeDefinition)complexTypeDef.getBaseType()).getVariety() == XSSimpleTypeDefinition.VARIETY_LIST;
+
+ } // isComplexTypeDerivedFromSTListByExt
+
} // class XSTypeHelper
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org