[ 
https://issues.apache.org/jira/browse/WSCOMMONS-324?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12595184#action_12595184
 ] 

Tim Mitchell commented on WSCOMMONS-324:
----------------------------------------

I've tested the changes, and everything seems to work OK. Thanks for the help.

> MTOM Attachment binary data not being inlined into ByteArrayOutputStream when 
> using SOAPEnvelope.serializeAndConsume()
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: WSCOMMONS-324
>                 URL: https://issues.apache.org/jira/browse/WSCOMMONS-324
>             Project: WS-Commons
>          Issue Type: Bug
>          Components: AXIOM
>            Reporter: Tim Mitchell
>            Assignee: Rich Scheuerle
>
> We're running a test to serialise a SOAPEnvelope that contains MTOM 
> Attachments to a ByteArrayOutputStream using the 
> SOAPEnvelope.serializeAndConsume(). Depending on whether we have touched the 
> XOP Element in the SOAPEnvelope before we do the serializeAndConsume() we get 
> different output. In the untouched case, the MTOM XOP Element isn't 
> substituted with the binary attachment data, and still contains the reference 
> to the Mime Attachment, whereas, once the element has been looked at, it has 
> the binary attachment data inlined.
> The following is a snippet of the code we're running:
> ByteArrayOutputStream bos1 = new ByteArrayOutputStream();
> ByteArrayOutputStream bos2 = new ByteArrayOutputStream();
> // fis is the Request Msg InputStream, and contentType has the MultiPart MTOM 
> references.
> Attachments attachments = new Attachments(fis, contentType);
> PushbackInputStream pis = 
> BuilderUtil.getPushbackInputStream(attachments.getSOAPPartInputStream());
> String origEncoding = 
> BuilderUtil.getCharSetEncoding(attachments.getSOAPPartContentType());
> String encoding = BuilderUtil.getCharSetEncoding(pis, origEncoding);
> XMLStreamReader streamReader = StAXUtils.createXMLStreamReader(pis, encoding);
> StAXBuilder builder1 = new MTOMStAXSOAPModelBuilder(streamReader, 
> attachments);
> StAXBuilder builder2 = new MTOMStAXSOAPModelBuilder(streamReader, 
> attachments);
> SOAPEnvelope envelope1 = (SOAPEnvelope)builder1.getDocumentElement();
> SOAPEnvelope envelope2 = (SOAPEnvelope)builder2.getDocumentElement();
>           
> envelope1.serializeAndConsume(bos1);
>           
> SOAPBody body = envelope2.getBody();
> for (Iterator iter = body.getChildrenWithName(new 
> QName(body.getNamespace().getNamespaceURI(), "MTOMAttachment")); 
> iter.hasNext();)  {
>     iter.next();
> }
>               
> envelope2.serializeAndConsume(bos2);
> The following output from the test shows the untouched envelope with the MTOM 
> reference still in an XOP element, and the touched Envelope with the XOP 
> element replaced with the binary attachment data:
> bos1 (The untouched Envelope)
> <?xml version="1.0" encoding="utf-8"?><soapenv:Envelope 
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";><soapenv:Header 
> xmlns:wsa="http://www.w3.org/2005/08/addressing";><wsa:To>http://localhost:7082/axis2/services/MTOMService</wsa:To><wsa:MessageID>urn:uuid:93AF3E38B272DCAB881208359796616</wsa:MessageID><wsa:Action>sendString</wsa:Action></soapenv:Header><soapenv:Body><MTOMService:sendString
>  xmlns:MTOMService="http://test";><MTOMService:Text>Client 
> Test</MTOMService:Text></MTOMService:sendString><soapenv:MTOMAttachment><xop:Include
>  href="cid:1.urn:uuid:[EMAIL PROTECTED]" 
> xmlns:xop="http://www.w3.org/2004/08/xop/include";></xop:Include></soapenv:MTOMAttachment></soapenv:Body></soapenv:Envelope>
> bos2 (The touched Envelope)
> serialized envelope: <?xml version="1.0" encoding="utf-8"?><soapenv:Envelope 
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";><soapenv:Header 
> xmlns:wsa="http://www.w3.org/2005/08/addressing";><wsa:To>http://localhost:7082/axis2/services/MTOMService</wsa:To><wsa:MessageID>urn:uuid:93AF3E38B272DCAB881208359796616</wsa:MessageID><wsa:Action>sendString</wsa:Action></soapenv:Header><soapenv:Body><MTOMService:sendString
>  xmlns:MTOMService="http://test";><MTOMService:Text>Client 
> Test</MTOMService:Text></MTOMService:sendString><soapenv:MTOMAttachment>0M8R4KGxGuEAAAAAAAAAAAAAAAA/.....
>  [Rest of Binary 
> Data]...</soapenv:MTOMAttachment></soapenv:Body></soapenv:Envelope>

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

Reply via email to