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:45:03 UTC
svn commit: r1871903 - in /xerces/java/trunk: src/org/apache/xerces/impl/xs/
tests/idc/
Author: mukulg
Date: Sun Dec 22 06:45:03 2019
New Revision: 1871903
URL: http://svn.apache.org/viewvc?rev=1871903&view=rev
Log:
xsd idc constraints fixes: 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. the fix for XERCESJ-1714 in this commit, borrows fix from openjdk's xsd validator.
Added:
xerces/java/trunk/tests/idc/jira_1594.xml
xerces/java/trunk/tests/idc/jira_1594.xsd
xerces/java/trunk/tests/idc/jira_1714.xsd
xerces/java/trunk/tests/idc/jira_1714_invalid.xml
xerces/java/trunk/tests/idc/jira_1714_valid.xml
Modified:
xerces/java/trunk/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
xerces/java/trunk/tests/idc/IDConstraintTests.java
Modified: xerces/java/trunk/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
URL: http://svn.apache.org/viewvc/xerces/java/trunk/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java?rev=1871903&r1=1871902&r2=1871903&view=diff
==============================================================================
--- xerces/java/trunk/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java (original)
+++ xerces/java/trunk/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java Sun Dec 22 06:45:03 2019
@@ -2442,7 +2442,7 @@ public class XMLSchemaValidator
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();
}
}
@@ -3714,6 +3714,7 @@ public class XMLSchemaValidator
/** Current data value count. */
protected int fValuesCount;
+ protected boolean fHasValue = false;
/** global data */
public final Vector fValues = new Vector();
@@ -3881,6 +3882,7 @@ public class XMLSchemaValidator
}
else {
fValuesCount++;
+ fHasValue = true;
}
fLocalValues[i] = actualValue;
fLocalValueTypes[i] = valueType;
Modified: xerces/java/trunk/tests/idc/IDConstraintTests.java
URL: http://svn.apache.org/viewvc/xerces/java/trunk/tests/idc/IDConstraintTests.java?rev=1871903&r1=1871902&r2=1871903&view=diff
==============================================================================
--- xerces/java/trunk/tests/idc/IDConstraintTests.java (original)
+++ xerces/java/trunk/tests/idc/IDConstraintTests.java Sun Dec 22 06:45:03 2019
@@ -506,5 +506,63 @@ public class IDConstraintTests extends X
assertTrue(false);
}
}
+
+ public void testIDConstraint25() {
+ String xmlfile = "tests/idc/jira_1594.xml";
+ String schemapath = "tests/idc/jira_1594.xsd";
+ try {
+ 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 'keyref' with value '1' not found for identity constraint of element 'personnel'");
+ expectedMsgList.add(mesgFragments);
+ assertTrue(areErrorMessagesConsistent(expectedMsgList));
+ } catch(Exception ex) {
+ ex.printStackTrace();
+ assertTrue(false);
+ }
+ }
+
+ public void testIDConstraint26() {
+ String xmlfile = "tests/idc/jira_1714_valid.xml";
+ String schemapath = "tests/idc/jira_1714.xsd";
+ try {
+ Schema s = fSchemaFactory.newSchema(new StreamSource(schemapath));
+ Validator v = s.newValidator();
+ v.setErrorHandler(this);
+ v.validate(new StreamSource(xmlfile));
+ assertNull(fErrSysId);
+ assertNull(fFatErrSysId);
+ } catch(Exception ex) {
+ ex.printStackTrace();
+ assertTrue(false);
+ }
+ }
+
+ public void testIDConstraint27() {
+ String xmlfile = "tests/idc/jira_1714_invalid.xml";
+ String schemapath = "tests/idc/jira_1714.xsd";
+ try {
+ 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));
+ } catch(Exception ex) {
+ ex.printStackTrace();
+ assertTrue(false);
+ }
+ }
}
Added: xerces/java/trunk/tests/idc/jira_1594.xml
URL: http://svn.apache.org/viewvc/xerces/java/trunk/tests/idc/jira_1594.xml?rev=1871903&view=auto
==============================================================================
--- xerces/java/trunk/tests/idc/jira_1594.xml (added)
+++ xerces/java/trunk/tests/idc/jira_1594.xml Sun Dec 22 06:45:03 2019
@@ -0,0 +1,13 @@
+<personnel>
+ <person id="111">
+ <name>name</name>
+ <ref>1</ref>
+ </person>
+ <person id="222">
+ <name>name</name>
+ <ref>2</ref>
+ </person>
+ <person id="333">
+ <name>name</name>
+ </person>
+</personnel>
\ No newline at end of file
Added: xerces/java/trunk/tests/idc/jira_1594.xsd
URL: http://svn.apache.org/viewvc/xerces/java/trunk/tests/idc/jira_1594.xsd?rev=1871903&view=auto
==============================================================================
--- xerces/java/trunk/tests/idc/jira_1594.xsd (added)
+++ xerces/java/trunk/tests/idc/jira_1594.xsd Sun Dec 22 06:45:03 2019
@@ -0,0 +1,29 @@
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="personnel">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="person" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:key name="key">
+ <xs:selector xpath="person"/>
+ <xs:field xpath="@id"/>
+ </xs:key>
+ <xs:keyref refer="key" name="keyref">
+ <xs:selector xpath="person"/>
+ <xs:field xpath="ref"/>
+ </xs:keyref>
+ </xs:element>
+
+ <xs:element name="person">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="name" type="xs:string"/>
+ <xs:element name="ref" type="xs:integer" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:integer" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
\ No newline at end of file
Added: xerces/java/trunk/tests/idc/jira_1714.xsd
URL: http://svn.apache.org/viewvc/xerces/java/trunk/tests/idc/jira_1714.xsd?rev=1871903&view=auto
==============================================================================
--- xerces/java/trunk/tests/idc/jira_1714.xsd (added)
+++ xerces/java/trunk/tests/idc/jira_1714.xsd Sun Dec 22 06:45:03 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/trunk/tests/idc/jira_1714_invalid.xml
URL: http://svn.apache.org/viewvc/xerces/java/trunk/tests/idc/jira_1714_invalid.xml?rev=1871903&view=auto
==============================================================================
--- xerces/java/trunk/tests/idc/jira_1714_invalid.xml (added)
+++ xerces/java/trunk/tests/idc/jira_1714_invalid.xml Sun Dec 22 06:45:03 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/trunk/tests/idc/jira_1714_valid.xml
URL: http://svn.apache.org/viewvc/xerces/java/trunk/tests/idc/jira_1714_valid.xml?rev=1871903&view=auto
==============================================================================
--- xerces/java/trunk/tests/idc/jira_1714_valid.xml (added)
+++ xerces/java/trunk/tests/idc/jira_1714_valid.xml Sun Dec 22 06:45:03 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
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org