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/11/11 06:52:12 UTC

svn commit: r1869644 - /xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractIDConstraintTraverser.java

Author: mukulg
Date: Mon Nov 11 06:52:12 2019
New Revision: 1869644

URL: http://svn.apache.org/viewvc?rev=1869644&view=rev
Log:
With xerces's xsd 1.1 implementation when running in xsd 1.0 mode, processing the following schema document that uses xsd idc constraints, results in java.lang.NullPointerException,

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="X">
       <xs:complexType>
          <xs:sequence>
             <xs:element name="a" type="xs:integer" maxOccurs="unbounded"/>
             <xs:element name="b" type="xs:integer"/>
          </xs:sequence>        
       </xs:complexType>
       <xs:key name="a_key">
          <xs:selector xpath="a"/>
          <xs:field xpath="."/>
       </xs:key>
  </xs:element>
  
  <xs:element name="Y">
     <xs:complexType>
        <xs:sequence>
          <xs:element name="a" type="xs:integer" maxOccurs="unbounded"/>
          <xs:element name="b" type="xs:integer"/>
        </xs:sequence>        
     </xs:complexType>
     <xs:key ref="a_key"/>
  </xs:element>
  
</xs:schema>

This commit fixes this issue.

Modified:
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractIDConstraintTraverser.java

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractIDConstraintTraverser.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractIDConstraintTraverser.java?rev=1869644&r1=1869643&r2=1869644&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractIDConstraintTraverser.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractIDConstraintTraverser.java Mon Nov 11 06:52:12 2019
@@ -209,11 +209,14 @@ class XSDAbstractIDConstraintTraverser e
         Object[] attrValues = fAttrChecker.checkAttributes(icElem, false, schemaDoc);        
         QName referredIcQName = (QName)attrValues[XSAttributeChecker.ATTIDX_REF];
         
-        IdentityConstraint referredIc = (IdentityConstraint)fSchemaHandler.getGlobalDecl(schemaDoc, XSDHandler.IDENTITYCONSTRAINT_TYPE, referredIcQName, icElem);
-        // TODO: If the referredIc had a problem such as the refer attribute did not resolve to a unique/key, 
-        //       the referredIc will not have been built but it will be hidden.
-        //       When we try to get its declaration, it will display Internal error.
-        //       Same thing happens when a keyref has refer attribute which is its own name.  But the internal error would be correct.
+        IdentityConstraint referredIc = null;
+        if (referredIcQName != null) {
+            referredIc = (IdentityConstraint)fSchemaHandler.getGlobalDecl(schemaDoc, XSDHandler.IDENTITYCONSTRAINT_TYPE, referredIcQName, icElem);
+            // TODO: If the referredIc had a problem such as the refer attribute did not resolve to a unique/key, 
+            //       the referredIc will not have been built but it will be hidden.
+            //       When we try to get its declaration, it will display Internal error.
+            //       Same thing happens when a keyref has refer attribute which is its own name.  But the internal error would be correct.
+        }
         
         if (referredIc == null) {
             fAttrChecker.returnAttrArray(attrValues, schemaDoc);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org