use of org.xmlsoap.schemas.soap.envelope.Body in project camel by apache.
the class Soap11DataFormatAdapter method doMarshal.
@Override
public Object doMarshal(Exchange exchange, Object inputObject, OutputStream stream, String soapAction) throws IOException {
Body body = objectFactory.createBody();
Header header = objectFactory.createHeader();
Throwable exception = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Throwable.class);
if (exception == null) {
exception = exchange.getIn().getHeader(Exchange.EXCEPTION_CAUGHT, Throwable.class);
}
final List<Object> bodyContent;
List<Object> headerContent = new ArrayList<Object>();
if (exception != null) {
bodyContent = new ArrayList<Object>();
bodyContent.add(createFaultFromException(exception));
} else {
if (!dataFormat.isIgnoreUnmarshalledHeaders()) {
List<Object> inboundSoapHeaders = (List<Object>) exchange.getIn().getHeader(SoapJaxbDataFormat.SOAP_UNMARSHALLED_HEADER_LIST);
if (null != inboundSoapHeaders) {
headerContent.addAll(inboundSoapHeaders);
}
}
bodyContent = getDataFormat().createContentFromObject(inputObject, soapAction, headerContent);
}
for (Object elem : bodyContent) {
body.getAny().add(elem);
}
for (Object elem : headerContent) {
header.getAny().add(elem);
}
Envelope envelope = new Envelope();
if (headerContent.size() > 0) {
envelope.setHeader(header);
}
envelope.setBody(body);
JAXBElement<Envelope> envelopeEl = objectFactory.createEnvelope(envelope);
return envelopeEl;
}