Hi,

The following piece of code throws an IndexOutOfBoundsException in 
org.jboss.ws.soap.NodeImpl.getFirstChild:


  | import org.w3c.dom.Document;
  | import org.w3c.dom.Element;
  | 
  | import javax.xml.parsers.DocumentBuilderFactory;
  | import javax.xml.soap.MessageFactory;
  | import javax.xml.soap.SOAPBody;
  | import javax.xml.soap.SOAPMessage;
  | import javax.xml.transform.Transformer;
  | import javax.xml.transform.TransformerFactory;
  | import javax.xml.transform.dom.DOMResult;
  | import javax.xml.transform.dom.DOMSource;
  | import javax.xml.transform.stream.StreamResult;
  | 
  | public class SaajIssue {
  | 
  |     public static void main(String[] args) throws Exception {
  |         MessageFactory messageFactory = MessageFactory.newInstance();
  |         SOAPMessage soapMessage = messageFactory.createMessage();
  |         Transformer transformer = 
TransformerFactory.newInstance().newTransformer();
  |         Document document = 
DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
  |         Element root = document.createElementNS("http://test.com";, "root");
  |         document.appendChild(root);
  |         Element child = document.createElementNS("http://test.com";, 
"child");
  |         root.appendChild(child);
  |         SOAPBody body = soapMessage.getSOAPBody();
  |         transformer.transform(new DOMSource(document), new DOMResult(body));
  |         // Next line throws an IndexOutOfBoundsException
  |         transformer.transform(new DOMSource(body), new 
StreamResult(System.out));
  |     }
  | }
  | 

This is the stacktrace:


  | Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, 
Size: 0
  |     at java.util.ArrayList.RangeCheck(ArrayList.java:546)
  |     at java.util.ArrayList.get(ArrayList.java:321)
  |     at org.jboss.ws.soap.NodeImpl.getFirstChild(NodeImpl.java:311)
  |     at 
org.jboss.ws.soap.SOAPContentElement.getFirstChild(SOAPContentElement.java:746)
  |     at org.apache.xml.serializer.TreeWalker.traverse(TreeWalker.java:145)
  |     at 
org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:389)
  |     at SaajIssue.main(SaajIssue.java:36)
  | 

After some investigation, it appears that the root element is imported 
correctly, but the child element is not. To be more precise: it is imported 
into the internal domNode of NodeImpl, but not the soapChildren list.

SUN's reference implementation of SAAJ does not throw this exception, so it 
appears this is a bug in the JBoss SAAJ implementation. Am I correct?

Thanks,

Arjen Poutsma

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3957021#3957021

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3957021
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to