users@jaxb.java.net

Unmarshalling a DOM throws NPE

From: Mark D. Hansen <khookguy_at_yahoo.com>
Date: Mon, 12 May 2003 09:06:58 -0400

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)