private static String getOutboundBodyPayload(Message message) { WrappedOutputStream wrapper = OutStreamSubstituteInterceptor.getStreamWrapper(message); wrapper.deactivate(); return wrapper.getCollectedPayload(); }
@Override public void handleMessage(Message message) { try { boolean success = false; Object x = message.getContent(XMLStreamWriter.class); if (x instanceof BaseStreamWriter) { x = MWRITER_FIELD.get(x); if (x instanceof BufferingXmlWriter) { x = MOUT_WRITER_FIELD.get(x); if (x instanceof UTF8Writer) { UTF8Writer writer = (UTF8Writer) x; x = MOUT_STREAM_FIELD.get(writer); if (x instanceof OutputStream) { OutputStream os = (OutputStream) x; WrappedOutputStream wrapper = new WrappedOutputStream(os, (String) message.get(Message.ENCODING)); message.setContent(OutputStream.class, wrapper); MOUT_STREAM_FIELD.set(writer, wrapper); success = true; } } } } if (!success) { throw new IllegalStateException("Unable to wrap the output stream, check involved classes"); } } catch (IllegalAccessException e) { throw new IllegalStateException(e); } }
@Override public void handleMessage(Message message) { if (isGET(message)) { return; } WrappedOutputStream wrapper = OutStreamSubstituteInterceptor.getStreamWrapper(message); if (! Boolean.FALSE.equals(message.getContextualProperty(PAYLOAD_COLLECTING_DEACTIVATION_ENABLED))) { wrapper.deactivate(); } String soapEnvelope = wrapper.getCollectedPayload(); String payload = SoapUtils.extractSoapBody(soapEnvelope); StringPayloadHolder payloadHolder = new StringPayloadHolder(); payloadHolder.put(SOAP_BODY, payload); message.setContent(StringPayloadHolder.class, payloadHolder); } }