Author: sandygao Date: Fri Sep 9 17:29:55 2011 New Revision: 1167302 URL: http://svn.apache.org/viewvc?rev=1167302&view=rev Log: Fixing a potential NPE. When a CTA XPath is invalid, we store "null" in the Test object, whose toString() method would produce an NPE in this case.
Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/alternative/Test.java xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDTypeAlternativeTraverser.java Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/alternative/Test.java URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/alternative/Test.java?rev=1167302&r1=1167301&r2=1167302&view=diff ============================================================================== --- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/alternative/Test.java (original) +++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/alternative/Test.java Fri Sep 9 17:29:55 2011 @@ -44,6 +44,9 @@ public class Test extends AbstractPsycho /** The type alternative to which the test belongs */ protected final XSTypeAlternativeImpl fTypeAlternative; + + /** String representation of the XPath */ + protected final String fExpression; /** XPath 2.0 expression. Xerces-J native XPath 2.0 subset. */ protected final XPath20 fXPath; @@ -57,6 +60,7 @@ public class Test extends AbstractPsycho /** Constructs a "test" for type alternatives */ public Test(XPath20 xpath, XSTypeAlternativeImpl typeAlternative, NamespaceSupport namespaceContext) { fXPath = xpath; + fExpression = xpath == null ? "" : xpath.getXPathStrValue(); fXPathPsychoPath = null; fTypeAlternative = typeAlternative; fXPath2NamespaceContext = namespaceContext; @@ -65,8 +69,9 @@ public class Test extends AbstractPsycho /* * Constructs a "test" for type alternatives. An overloaded constructor, for PsychoPath XPath processor. */ - public Test(XPath xpath, XSTypeAlternativeImpl typeAlternative, NamespaceSupport namespaceContext) { + public Test(XPath xpath, String expression, XSTypeAlternativeImpl typeAlternative, NamespaceSupport namespaceContext) { fXPath = null; + fExpression = expression == null ? "" : expression; fXPathPsychoPath = xpath; fTypeAlternative = typeAlternative; fXPath2NamespaceContext = namespaceContext; @@ -109,7 +114,7 @@ public class Test extends AbstractPsycho } public String toString() { - return fXPath.getXPathStrValue(); + return fExpression; } /* Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDTypeAlternativeTraverser.java URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDTypeAlternativeTraverser.java?rev=1167302&r1=1167301&r2=1167302&view=diff ============================================================================== --- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDTypeAlternativeTraverser.java (original) +++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDTypeAlternativeTraverser.java Fri Sep 9 17:29:55 2011 @@ -196,7 +196,7 @@ class XSDTypeAlternativeTraverser extend // if full XPath 2.0 support is enabled for CTA, use PsychoPath XPath 2.0 engine for XPath evaluation XPathParser xpp = new JFlexCupParser(); XPath xp = xpp.parse("boolean(" + testStr + ")"); - testExpr = new Test(xp, typeAlternative, schemaDoc.fNamespaceSupport); + testExpr = new Test(xp, testStr, typeAlternative, schemaDoc.fNamespaceSupport); } else { // if XPath subset is enabled for CTA (this is also the default option), use Xerces's native XPath parser for CTA --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@xerces.apache.org For additional commands, e-mail: commits-h...@xerces.apache.org