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