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