You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by "Michael Glavassevich (JIRA)" <xe...@xml.apache.org> on 2010/12/13 21:13:00 UTC

[jira] Assigned: (XERCESJ-1488) NullPointerException caused by XMLSchemaValidator.addDefaultAttributes

     [ https://issues.apache.org/jira/browse/XERCESJ-1488?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Glavassevich reassigned XERCESJ-1488:
---------------------------------------------

    Assignee: Khaled Noaman

Khaled, since you've been keeping up with the XML Schema 1.1 dev more than I have can you take a look at this one?

Some observations / questions from my quick review:

1) fisAtomicValueValid  is being set to false when XSTypeHelper.isAtomicValueValidForAnUnion() returns true. That seems backwards.
2) fisAtomicValueValid  isn't being initialized in reset(). Might be a bug.
3) Why are we calling isAtomicValueValidForAnUnion() anyway? We've just validated the value and seems that method calls the DVs a second time.
4) Why are we trying to call isAtomicValueValidForAnUnion() for the lexical form of the default value? Note that's where the NPE is. We're passing in null right now, but even if we were to pass the lexical value that was in the schema that doesn't seem right (e.g. trying to revalidate a defaulted QName value from its lexical form wouldn't work).

> NullPointerException caused by XMLSchemaValidator.addDefaultAttributes
> ----------------------------------------------------------------------
>
>                 Key: XERCESJ-1488
>                 URL: https://issues.apache.org/jira/browse/XERCESJ-1488
>             Project: Xerces2-J
>          Issue Type: Bug
>          Components: XML Schema 1.1 Structures
>    Affects Versions: 2.11.0
>         Environment: Java version: 1.6.0_23
> Java home: C:\Program Files\Java\jdk1.6.0_23\jre
> Default locale: en_US, platform encoding: Cp1252
> OS name: "windows vista" version: "6.0" arch: "amd64" Family: "windows"
>            Reporter: Gary Gregory
>            Assignee: Khaled Noaman
>            Priority: Blocker
>
> The following is a regression from 2.10 because our unit tests run OK with 2.10 and blow up with 2.11.
> NullPointerException caused by XMLSchemaValidator.addDefaultAttributes  
> Note that the second argument is null in the call:
> {noformat}
> if (XSTypeHelper.isAtomicValueValidForAnUnion(attDV.getMemberTypes(), 
> 	null, defaultValue)) {
> {noformat}
> at
> XMLSchemaValidator.addDefaultAttributes(QName, XMLAttributes, XSAttributeGroupDecl) line: 3385	
> Which means that at this point in the call chain:
> {noformat}
> Thread [main] (Suspended (breakpoint at line 2255 in XSSimpleTypeDecl))	
> 	XSSimpleTypeDecl.normalize(Object, short) line: 2255	
> 	XSSimpleTypeDecl.getActualValue(Object, ValidationContext, ValidatedInfo, boolean) line: 2053	
> 	XSSimpleTypeDecl.validate(String, ValidationContext, ValidatedInfo) line: 1742	
> 	XSTypeHelper.isValueValidForASimpleType(String, XSSimpleType) line: 135	
> 	XSTypeHelper.isAtomicValueValidForAnUnion(XSObjectList, String, ValidatedInfo) line: 108	
> 	XMLSchemaValidator.addDefaultAttributes(QName, XMLAttributes, XSAttributeGroupDecl) line: 3385	
> 	XMLSchemaValidator.handleStartElement(QName, XMLAttributes, Augmentations) line: 2375	
> 	XMLSchemaValidator.startElement(QName, XMLAttributes, Augmentations) line: 815	
> 	XMLNSDocumentScannerImpl.scanStartElement() line: 283	
> 	XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook() line: 733	
> 	XMLNSDocumentScannerImpl$NSContentDispatcher(XMLDocumentFragmentScannerImpl$FragmentContentDispatcher).dispatch(boolean) line: 1754	
> 	XMLNSDocumentScannerImpl(XMLDocumentFragmentScannerImpl).scanDocument(boolean) line: 324	
> 	IntegratedParserConfiguration(DTDConfiguration).parse(boolean) line: 515	
> 	IntegratedParserConfiguration(DTDConfiguration).parse(XMLInputSource) line: 571	
> 	DOMParser(XMLParser).parse(XMLInputSource) line: 108	
> 	DOMParser.parse(InputSource) line: 230	
> 	DocumentBuilderImpl.parse(InputSource) line: 298	
> 	XmlValidator.validate(InputSource) line: 279	
> 	XmlValidator.validate(URL) line: 317	
> 	XmlValidator.validate(String) line: 300	
> 	XmlValidatorTestCase.validateXmlSchema1_0_2(String) line: 187	
> 	XmlValidatorTestCase.testSimpleXsd_XmlSchema1_0_2() line: 126	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object...) line: 597	
> 	FrameworkMethod$1.runReflectiveCall() line: 44	
> 	FrameworkMethod$1(ReflectiveCallable).run() line: 15	
> 	FrameworkMethod.invokeExplosively(Object, Object...) line: 41	
> 	InvokeMethod.evaluate() line: 20	
> 	BlockJUnit4ClassRunner.runNotIgnored(FrameworkMethod, EachTestNotifier) line: 79	
> 	BlockJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 71	
> 	BlockJUnit4ClassRunner.runChild(Object, RunNotifier) line: 49	
> 	ParentRunner$3.run() line: 193	
> 	ParentRunner$1.schedule(Runnable) line: 52	
> 	BlockJUnit4ClassRunner(ParentRunner<T>).runChildren(RunNotifier) line: 191	
> 	ParentRunner<T>.access$000(ParentRunner, RunNotifier) line: 42	
> 	ParentRunner$2.evaluate() line: 184	
> 	BlockJUnit4ClassRunner(ParentRunner<T>).run(RunNotifier) line: 236	
> 	JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 49	
> 	TestExecution.run(ITestReference[]) line: 38	
> 	RemoteTestRunner.runTests(String[], String, TestExecution) line: 467	
> 	RemoteTestRunner.runTests(TestExecution) line: 683	
> 	RemoteTestRunner.run() line: 390	
> 	RemoteTestRunner.main(String[]) line: 197	
> {noformat}
> 	
> The "return null;" runs at:
> XSSimpleTypeDecl.normalize(Object, short) line: 2255	
> {noformat}
>         if (content == null)
>             return null;
> {noformat}
> 			
> Which then causes:
> {noformat}
> java.lang.NullPointerException
> 	at java.util.StringTokenizer.<init>(StringTokenizer.java:182)
> 	at java.util.StringTokenizer.<init>(StringTokenizer.java:204)
> 	at org.apache.xerces.impl.dv.xs.XSSimpleTypeDecl.getActualValue(XSSimpleTypeDecl.java:2105)
> 	at org.apache.xerces.impl.dv.xs.XSSimpleTypeDecl.validate(XSSimpleTypeDecl.java:1742)
> 	at org.apache.xerces.impl.xs.util.XSTypeHelper.isValueValidForASimpleType(XSTypeHelper.java:135)
> 	at org.apache.xerces.impl.xs.util.XSTypeHelper.isAtomicValueValidForAnUnion(XSTypeHelper.java:108)
> 	at org.apache.xerces.impl.xs.XMLSchemaValidator.addDefaultAttributes(XMLSchemaValidator.java:3385)
> 	at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:2375)
> 	at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:815)
> 	at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:283)
> 	at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:733)
> 	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1754)
> 	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324)
> 	at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:515)
> 	at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:571)
> 	at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)
> 	at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:230)
> 	at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:298)
> 	at com.seagullsw.toolbox.xml.XmlValidator.validate(XmlValidator.java:279)
> 	at com.seagullsw.toolbox.xml.XmlValidator.validate(XmlValidator.java:317)
> 	at com.seagullsw.toolbox.xml.XmlValidator.validate(XmlValidator.java:300)
> 	at com.seagullsw.toolbox.xml.XmlValidatorTestCase.validateXmlSchema1_0_2(XmlValidatorTestCase.java:187)
> 	at com.seagullsw.toolbox.xml.XmlValidatorTestCase.testSimpleXsd_XmlSchema1_0_2(XmlValidatorTestCase.java:126)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
> 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> {noformat}
> because the null value is passed all the way down the call chain until it causes the implosion.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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