LogicalMessage msg = messagecontext.getMessage();
String st = getStringFromSourcePayload(msg.getPayload());
String txt = String.valueOf(Integer.valueOf(getFirstArg(st)) - 1);
st = replaceFirstArg(st, txt);
msg.setPayload(new StreamSource(new StringBufferInputStream(st)));
} else { // inbound request on the server
// this is the second server inbound hit
// turn off special property that logs ability to use
// both SOAPHeadersAdapter and SAAJ in a single handler method:
messagecontext.put(org.apache.axis2.jaxws.handler.Constants.JAXWS_HANDLER_TRACKER, false);
// let's check for all the headers we expect, remove them, and manipulate the message payload
Map<QName, List<String>> requestHeaders = (Map<QName, List<String>>)messagecontext.get(Constants.JAXWS_INBOUND_SOAP_HEADERS);
headerUtil.confirmHeadersAdapterList(Constants.JAXWS_INBOUND_SOAP_HEADERS, requestHeaders, 2);
// expecting two header elements under two different QNames
List<String> list1 = requestHeaders.get(TestHeaders.ACOH3_HEADER_QNAME);
headerUtil.confirmList(TestHeaders.ACOH3_HEADER_QNAME, list1, 1);
String acoh1 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH3_HEADER_QNAME, TestHeaders.CONTENT_LARGE);
headerUtil.compareHeaderStrings(acoh1, list1.get(0));
tracker.checkHeader(list1.get(0));
List<String> list2 = requestHeaders.get(TestHeaders.ACOH4_HEADER_QNAME);
headerUtil.confirmList(TestHeaders.ACOH4_HEADER_QNAME, list2, 1);
String acoh4 = TestHeaders.createHeaderXMLString(TestHeaders.ACOH4_HEADER_QNAME, TestHeaders.CONTENT_SMALL4);
headerUtil.compareHeaderStrings(acoh4, list2.get(0));
tracker.checkHeader(list2.get(0));
// remove the headers before continuing
tracker.removedHeader(acoh1);
requestHeaders.remove(TestHeaders.ACOH3_HEADER_QNAME);
// manipulate the payload between header removals just to be thorough
/*
* NOTE: This is an important test! The get of a header from the SOAPHeadersAdapter triggers a
* parse of the header OM element, which previously marked the parser as 'done'. This caused the
* below getPayload() to throw an OMException. This only occurred on server inbound in this
* scenario, so this implementation MUST REMAIN. See top of XMLStringBlockImpl._getBOFromReader
* for the fix.
*/
LogicalMessage msg = messagecontext.getMessage();
String st = getStringFromSourcePayload(msg.getPayload());
String txt = String.valueOf(Integer.valueOf(getFirstArg(st)) - 1);
st = replaceFirstArg(st, txt);
msg.setPayload(new StreamSource(new StringBufferInputStream(st)));
tracker.removedHeader(acoh4);
requestHeaders.remove(TestHeaders.ACOH4_HEADER_QNAME);
if (st.contains("66")) {