Uploaded image for project: 'Santuario'
  1. Santuario
  2. SANTUARIO-457

Marshaller:sendAttributeToWriter broken by Attr without namespace

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • Java 2.0.6
    • Java 2.0.8, Java 2.1.0
    • None
    • None

    Description

      Marshaller:sendAttributeToWriter assumes that the Attr instance that's passed in has valid (not null) namespace, it uses DOM Level 2 methods to get namespace, localname and prefix. In case of a DOM Level 1 attribute (as org.apache.xerces.dom.AttrImpl), those methods all return null, which later causes a NPE when the XmlWriterToTree tries to write the attribute:

      15:28:53,567 ERROR [stderr] (default task-3) java.lang.NullPointerException
      15:28:53,567 ERROR [stderr] (default task-3) 	at org.apache.xerces.dom.AttrNSImpl.setName(AttrNSImpl.java:87)
      15:28:53,567 ERROR [stderr] (default task-3) 	at org.apache.xerces.dom.AttrNSImpl.<init>(AttrNSImpl.java:74)
      15:28:53,568 ERROR [stderr] (default task-3) 	at org.apache.xerces.dom.CoreDocumentImpl.createAttributeNS(CoreDocumentImpl.java:2147)
      15:28:53,568 ERROR [stderr] (default task-3) 	at com.sun.xml.messaging.saaj.soap.SOAPDocumentImpl.createAttributeNS(SOAPDocumentImpl.java:186)
      15:28:53,568 ERROR [stderr] (default task-3) 	at org.apache.jcp.xml.dsig.internal.dom.XmlWriterToTree.writeAttribute(XmlWriterToTree.java:146)
      15:28:53,568 ERROR [stderr] (default task-3) 	at org.apache.jcp.xml.dsig.internal.dom.Marshaller.sendAttributeToWriter(Marshaller.java:337)
      15:28:53,569 ERROR [stderr] (default task-3) 	at org.apache.jcp.xml.dsig.internal.dom.Marshaller.marshalGenericNode(Marshaller.java:309)
      15:28:53,569 ERROR [stderr] (default task-3) 	at org.apache.jcp.xml.dsig.internal.dom.Marshaller.marshalGenericNode(Marshaller.java:314)
      15:28:53,569 ERROR [stderr] (default task-3) 	at org.apache.jcp.xml.dsig.internal.dom.Marshaller.marshalGenericNode(Marshaller.java:280)
      15:28:53,569 ERROR [stderr] (default task-3) 	at org.apache.jcp.xml.dsig.internal.dom.Marshaller.access$000(Marshaller.java:48)
      15:28:53,570 ERROR [stderr] (default task-3) 	at org.apache.jcp.xml.dsig.internal.dom.Marshaller$14.marshalObject(Marshaller.java:245)
      15:28:53,570 ERROR [stderr] (default task-3) 	at org.apache.jcp.xml.dsig.internal.dom.Marshaller$14.marshalObject(Marshaller.java:241)
      15:28:53,570 ERROR [stderr] (default task-3) 	at org.apache.jcp.xml.dsig.internal.dom.XmlWriterToTree.marshalStructure(XmlWriterToTree.java:186)
      15:28:53,570 ERROR [stderr] (default task-3) 	at org.apache.jcp.xml.dsig.internal.dom.DOMKeyInfo.marshalInternal(DOMKeyInfo.java:179)
      15:28:53,571 ERROR [stderr] (default task-3) 	at org.apache.jcp.xml.dsig.internal.dom.DOMKeyInfo.marshal(DOMKeyInfo.java:164)
      15:28:53,571 ERROR [stderr] (default task-3) 	at org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.marshal(DOMXMLSignature.java:225)
      15:28:53,571 ERROR [stderr] (default task-3) 	at org.apache.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:330)
      

      I think there should be a check for the actual availability of namespace; if it's not available, Santuario should use Attr:getName() instead of Node:getLocalName().

      Attachments

        1. SANTUARIO-457.diff
          1 kB
          Alessio Soldano

        Activity

          People

            coheigea Colm O hEigeartaigh
            asoldano Alessio Soldano
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: