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 2019/12/22 06:51:11 UTC
svn commit: r1871904 - in /xerces/java/branches:
xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/
xs-1.1-tests/data/idconstraints/ xs-1.1-tests/src/org/apache/xerces/tests/
Author: mukulg
Date: Sun Dec 22 06:51:11 2019
New Revision: 1871904
URL: http://svn.apache.org/viewvc?rev=1871904&view=rev
Log:
xsd idc constraints fixes on xsd 1.1 dev branch: committing fix for jira issues XERCESJ-1594 & XERCESJ-1714. this fix, as a side effect also modifies the logic of fix for XERCESJ-1515. committing few new related test cases as well on xs-1.1-tests branch. the fix for XERCESJ-1714 in this commit, borrows fix from openjdk's xsd validator.
Added:
xerces/java/branches/xs-1.1-tests/data/idconstraints/jira_1714.xsd
xerces/java/branches/xs-1.1-tests/data/idconstraints/jira_1714_invalid.xml
xerces/java/branches/xs-1.1-tests/data/idconstraints/jira_1714_valid.xml
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidatorBase.java
xerces/java/branches/xs-1.1-tests/src/org/apache/xerces/tests/IDConstraintTests.java
Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java?rev=1871904&r1=1871903&r2=1871904&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java Sun Dec 22 06:51:11 2019
@@ -2005,7 +2005,7 @@ public class XMLSchemaValidator extends
fValueStoreCache.getValueStoreFor(id, selMatcher.getInitialDepth());
// nothing to do if nothing matched, or if not all
// fields are present.
- if (values != null && values.fValuesCount == values.fFieldCount)
+ if (values != null && values.fHasValue)
values.endDocumentFragment();
}
}
Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidatorBase.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidatorBase.java?rev=1871904&r1=1871903&r2=1871904&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidatorBase.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidatorBase.java Sun Dec 22 06:51:11 2019
@@ -1072,6 +1072,7 @@ public class XMLSchemaValidatorBase impl
/** Current data value count. */
protected int fValuesCount;
+ protected boolean fHasValue = false;
/** global data */
public final Vector fValues = new Vector();
@@ -1241,6 +1242,7 @@ public class XMLSchemaValidatorBase impl
}
else {
fValuesCount++;
+ fHasValue = true;
}
fLocalValues[i] = actualValue;
fLocalValueTypes[i] = valueType;
Added: xerces/java/branches/xs-1.1-tests/data/idconstraints/jira_1714.xsd
URL: http://svn.apache.org/viewvc/xerces/java/branches/xs-1.1-tests/data/idconstraints/jira_1714.xsd?rev=1871904&view=auto
==============================================================================
--- xerces/java/branches/xs-1.1-tests/data/idconstraints/jira_1714.xsd (added)
+++ xerces/java/branches/xs-1.1-tests/data/idconstraints/jira_1714.xsd Sun Dec 22 06:51:11 2019
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:example="http://www.example.org/root"
+ xmlns="http://www.example.org/root"
+ targetNamespace="http://www.example.org/root"
+ elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:element name="Root">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="Object" />
+ </xs:choice>
+ </xs:complexType>
+ <xs:key name="name_key">
+ <xs:selector xpath=".//example:Object" />
+ <xs:field xpath="@name" />
+ </xs:key>
+ <xs:keyref name="Collectiontype_defined" refer="name_key">
+ <xs:selector xpath=".//example:CollectionMember" />
+ <xs:field xpath="@type" />
+ </xs:keyref>
+ </xs:element>
+ <xs:element name="Members">
+ <xs:complexType>
+ <xs:group ref="example:memberTypes" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Object">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="Members" minOccurs="0" />
+ </xs:sequence>
+ <xs:attributeGroup ref="example:typedMemberAttributes" />
+ <xs:attributeGroup ref="example:namedMemberAttributes" />
+ </xs:complexType>
+ <xs:unique name="ObjectElementNameUniqueness">
+ <xs:selector xpath="example:Members/*" />
+ <xs:field xpath="@name" />
+ </xs:unique>
+ </xs:element>
+ <xs:element name="Collection">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="CollectionMembers" />
+ </xs:sequence>
+ <xs:attributeGroup ref="example:namedMemberAttributes" />
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CollectionMembers">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="CollectionMember" minOccurs="2"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CollectionMember">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="Members" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attributeGroup ref="example:typedMemberAttributes" />
+ <xs:attributeGroup ref="example:namedMemberAttributes" />
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="String">
+ <xs:complexType>
+ <xs:attributeGroup ref="example:namedMemberAttributes" />
+ </xs:complexType>
+ </xs:element>
+ <xs:group name="memberTypes">
+ <xs:choice>
+ <xs:element ref="String" />
+ <xs:element ref="Collection" />
+ </xs:choice>
+ </xs:group>
+ <xs:attributeGroup name="namedMemberAttributes">
+ <xs:attribute name="name" type="xs:Name" use="required" />
+ </xs:attributeGroup>
+ <xs:attributeGroup name="typedMemberAttributes">
+ <xs:attribute name="type" type="xs:Name" />
+ </xs:attributeGroup>
+</xs:schema>
\ No newline at end of file
Added: xerces/java/branches/xs-1.1-tests/data/idconstraints/jira_1714_invalid.xml
URL: http://svn.apache.org/viewvc/xerces/java/branches/xs-1.1-tests/data/idconstraints/jira_1714_invalid.xml?rev=1871904&view=auto
==============================================================================
--- xerces/java/branches/xs-1.1-tests/data/idconstraints/jira_1714_invalid.xml (added)
+++ xerces/java/branches/xs-1.1-tests/data/idconstraints/jira_1714_invalid.xml Sun Dec 22 06:51:11 2019
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Root xmlns="http://www.example.org/root">
+
+ <Object name="object2">
+ <Members>
+ <Collection name="Collection1">
+ <CollectionMembers>
+ <CollectionMember name="Collectionmember1" type="object1" />
+ <CollectionMember name="Collectionmember2" >
+ <Members>
+ <String name="string1" />
+ </Members>
+ </CollectionMember>
+ </CollectionMembers>
+ </Collection>
+ </Members>
+ </Object>
+</Root>
\ No newline at end of file
Added: xerces/java/branches/xs-1.1-tests/data/idconstraints/jira_1714_valid.xml
URL: http://svn.apache.org/viewvc/xerces/java/branches/xs-1.1-tests/data/idconstraints/jira_1714_valid.xml?rev=1871904&view=auto
==============================================================================
--- xerces/java/branches/xs-1.1-tests/data/idconstraints/jira_1714_valid.xml (added)
+++ xerces/java/branches/xs-1.1-tests/data/idconstraints/jira_1714_valid.xml Sun Dec 22 06:51:11 2019
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Root xmlns="http://www.example.org/root">
+
+ <Object name="object1">
+ <Members>
+ <String name="string1" />
+ </Members>
+ </Object>
+
+ <Object name="object2">
+ <Members>
+ <Collection name="Collection1">
+ <CollectionMembers>
+ <CollectionMember name="Collectionmember1" type="object1" />
+ <CollectionMember name="Collectionmember2" >
+ <Members>
+ <String name="string1" />
+ </Members>
+ </CollectionMember>
+ </CollectionMembers>
+ </Collection>
+ </Members>
+ </Object>
+</Root>
\ No newline at end of file
Modified: xerces/java/branches/xs-1.1-tests/src/org/apache/xerces/tests/IDConstraintTests.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xs-1.1-tests/src/org/apache/xerces/tests/IDConstraintTests.java?rev=1871904&r1=1871903&r2=1871904&view=diff
==============================================================================
--- xerces/java/branches/xs-1.1-tests/src/org/apache/xerces/tests/IDConstraintTests.java (original)
+++ xerces/java/branches/xs-1.1-tests/src/org/apache/xerces/tests/IDConstraintTests.java Sun Dec 22 06:51:11 2019
@@ -327,7 +327,7 @@ public class IDConstraintTests extends X
}
}
- /*public void testIDConstraint16() {
+ public void testIDConstraint16() {
String xmlfile = fDataDir+"/idconstraints/jira_1594.xml";
String schemapath = fDataDir+"/idconstraints/jira_1594.xsd";
try {
@@ -346,7 +346,7 @@ public class IDConstraintTests extends X
ex.printStackTrace();
assertTrue(false);
}
- }*/
+ }
public void testIDConstraint17() {
// run validation in XSD 1.0 mode
@@ -1242,6 +1242,73 @@ public class IDConstraintTests extends X
assertTrue(false);
}
}
+
+ public void testIDConstraint43() {
+ // run validation in XSD 1.0 mode
+ fSchemaFactory = SchemaFactory.newInstance(DEFAULT_SCHEMA_LANGUAGE);
+ String xmlfile = fDataDir+"/idconstraints/jira_1714_valid.xml";
+ String schemapath = fDataDir+"/idconstraints/jira_1714.xsd";
+ try {
+ fSchemaFactory.setFeature(SCHEMA_FULL_CHECKING_FEATURE_ID, true);
+ Schema s = fSchemaFactory.newSchema(new StreamSource(schemapath));
+ Validator v = s.newValidator();
+ v.setErrorHandler(this);
+ v.validate(new StreamSource(xmlfile));
+ assertNull(fErrSysId);
+ assertNull(fFatErrSysId);
+
+ // run validation again with same input files, now in XSD 1.1 mode
+ tearDown();
+ setUp();
+ s = fSchemaFactory.newSchema(new StreamSource(schemapath));
+ v = s.newValidator();
+ v.setErrorHandler(this);
+ v.validate(new StreamSource(xmlfile));
+ assertNull(fErrSysId);
+ assertNull(fFatErrSysId);
+ } catch(Exception ex) {
+ ex.printStackTrace();
+ assertTrue(false);
+ }
+ }
+
+ public void testIDConstraint44() {
+ // run validation in XSD 1.0 mode
+ fSchemaFactory = SchemaFactory.newInstance(DEFAULT_SCHEMA_LANGUAGE);
+ String xmlfile = fDataDir+"/idconstraints/jira_1714_invalid.xml";
+ String schemapath = fDataDir+"/idconstraints/jira_1714.xsd";
+ try {
+ fSchemaFactory.setFeature(SCHEMA_FULL_CHECKING_FEATURE_ID, true);
+ Schema s = fSchemaFactory.newSchema(new StreamSource(schemapath));
+ Validator v = s.newValidator();
+ v.setErrorHandler(this);
+ v.validate(new StreamSource(xmlfile));
+ assertTrue(failureList.size() == 1);
+ // test expected error messages
+ List expectedMsgList = new ArrayList();
+ FailureMesgFragments mesgFragments = new FailureMesgFragments();
+ mesgFragments.setMessageFragment("cvc-identity-constraint.4.3: Key 'Collectiontype_defined' with value 'object1' not found for identity constraint of element 'Root'");
+ expectedMsgList.add(mesgFragments);
+ assertTrue(areErrorMessagesConsistent(expectedMsgList));
+
+ // run validation again with same input files, now in XSD 1.1 mode
+ tearDown();
+ setUp();
+ s = fSchemaFactory.newSchema(new StreamSource(schemapath));
+ v = s.newValidator();
+ v.setErrorHandler(this);
+ v.validate(new StreamSource(xmlfile));
+ assertTrue(failureList.size() == 1);
+ // test expected error messages
+ expectedMsgList = new ArrayList();
+ mesgFragments = new FailureMesgFragments();
+ mesgFragments.setMessageFragment("cvc-identity-constraint.4.3: Key 'Collectiontype_defined' with value 'object1' not found for identity constraint of element 'Root'");
+ expectedMsgList.add(mesgFragments);
+ assertTrue(areErrorMessagesConsistent(expectedMsgList));
+ } catch(Exception ex) {
+ ex.printStackTrace();
+ assertTrue(false);
+ }
+ }
-}
-
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org