I see from reading this list that namespace problems with DOMs can cause
Null Pointer Exceptions during unmarshaling. I've run into a variant of
this problem that I can't seem to fix. The DOM causing the problem is
being populated by a javax.xml.transform.Transformer.
Below is code, XML, and stack trace. Any help will be much appreciated.
-- Mark
Source
========
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.newDocument();
JAXBContext jc =
JAXBContext.newInstance("com.javector.xml.soap.wsrm.jaxb" );
Unmarshaller u = jc.createUnmarshaller();
File xmlFile = new File(args[1]);
StreamSource strSrc = new StreamSource(xmlFile);
DOMResult domRes = new DOMResult(doc);
TransformerFactory xformFac = TransformerFactory.newInstance();
Transformer xform = xformFac.newTransformer();
xform.transform(strSrc, domRes);
Object o = u.unmarshal(doc);
XML File
============
<?xml version="1.0" encoding="UTF-8"?>
<wsrm:ReliableMessage soap:mustUnderstand="1"
xmlns:wsrm="
http://schemas.fujitsu.com/rm"
xmlns:soap="
http://schemas.xmlsoap.org/soap/envelope/">
<wsrm:MessageType>Message</wsrm:MessageType>
<wsrm:ReplyTo>
http://eai-client2:8080/ARL</wsrm:ReplyTo>
<wsrm:AckRequested synchronous="true"/>
</wsrm:ReliableMessage>
Stack Trace
==============
java.lang.NullPointerException
at
com.sun.xml.bind.unmarshaller.SAXUnmarshallerHandlerImpl.pushAttributes(
SAXUnmarshallerHandlerImpl.java:339)
at
com.javector.xml.soap.wsrm.jaxb.impl.ReliableMessageTypeImpl$Unmarshalle
r.enterElement(ReliableMessageTypeImpl.java:217)
at
com.sun.xml.bind.unmarshaller.SAXUnmarshallerHandlerImpl.startElement
(SAXUnmarshallerHandlerImpl.java:108)
at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:109)
at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:142)
at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:115)
at com.sun.xml.bind.unmarshaller.DOMScanner.parse(DOMScanner.java:64)
at
com.sun.xml.bind.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImp
l.java:149)
at
com.javector.test.wsrm.TestAckRequested.doIt(TestAckRequested.java:91)
at
com.javector.test.wsrm.TestAckRequested.main(TestAckRequested.java:44)