Process a MessageContext.
if (context.getPastPivot()) {
// This is a response. Add the response header, if we saw
// the requestHeader
SOAPStruct hdrVal= (SOAPStruct)context.getProperty(ECHOHEADER_STRUCT_ID);
if (hdrVal == null)
return;
Message msg = context.getResponseMessage();
if (msg == null)
return;
SOAPEnvelope env = msg.getSOAPEnvelope();
SOAPHeaderElement header = new SOAPHeaderElement(HEADER_NS,
HEADER_RESNAME,
hdrVal);
env.addHeader(header);
} else {
// Request. look for the header
Message msg = context.getRequestMessage();
if (msg == null)
throw new AxisFault(Messages.getMessage("noRequest00"));
SOAPEnvelope env = msg.getSOAPEnvelope();
SOAPHeaderElement header = env.getHeaderByName(HEADER_NS,
HEADER_REQNAME);
if (header != null) {
// seems Axis has already ignored any headers not tageted
// at us
SOAPStruct hdrVal ;
// header.getValue() doesn't seem to be connected to anything
// we always get null.
try {
hdrVal = (SOAPStruct)header.getValueAsType(SOAPStructType);
} catch (Exception e) {
throw AxisFault.makeFault(e);
}
context.setProperty(ECHOHEADER_STRUCT_ID, hdrVal) ;
header.setProcessed(true);
}
}