package com.apigee.singcust; import java.io.StringReader; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.soap.MessageFactory; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPMessage; import org.w3c.dom.Document; import org.xml.sax.InputSource; import com.apigee.flow.execution.ExecutionContext; import com.apigee.flow.execution.ExecutionResult; import com.apigee.flow.execution.spi.Execution; import com.apigee.flow.message.FlowContext; import com.apigee.flow.message.MessageContext; public class ConvertAttachmentToBody implements Execution { public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) { try { // message modification, IO operations, etc // do something here that might fail String xml =messageContext.getVariable("myResponse"); DocumentBuilderFactory factory = DocumentBuilderFactory .newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder .parse(new InputSource(new StringReader(xml))); SOAPMessage message = MessageFactory.newInstance().createMessage(); SOAPBody body = message.getSOAPBody(); body.addDocument(doc); message.saveChanges(); message.writeTo(System.out); /*messageContext.getMessage().getTransportMessage() .getContentAsString("response.content"); String str = messageContext.getResponseMessage().getVariable( "response.content"); String str2 = messageContext.getResponseMessage().getContent() .toString(); String str3 = messageContext.getMessage().getContent(); String str4 = messageContext.get("response.content"); messageContext.getMessage((FlowContext) messageContext .get("response.content")); messageContext.setVariable("arg0", str); messageContext.setVariable("arg1", str2); messageContext.setVariable("arg2", str3); messageContext.setVariable("arg3", str4); messageContext.setVariable("arg4", messageContext .getMessage((FlowContext) messageContext .get("response.content"))); messageContext.setVariable("arg5", messageContext.getMessage().getTransportMessage() .getContentAsString("response.content")); */ return ExecutionResult.SUCCESS; } catch (Exception ex) { ExecutionResult executionResult = new ExecutionResult(false, ExecutionResult.ABORT.getAction()); executionResult.setErrorResponse(ex.getMessage()); executionResult.addErrorResponseHeader("ExceptionClass", ex .getClass().getName()); return new ExecutionResult(false, ExecutionResult.ABORT.getAction()); } } }