antelder 2003/01/21 00:48:26
Modified: java/src/org/apache/wsif/providers/soap/apachesoap
WSIFOperation_ApacheSOAP.java
Log:
Bugzilla 16199 - response SOAP headers part 2
Change the Apache SOAP provider to pas back to the client any SOAP headers
Revision Changes Path
1.37 +36 -1
xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apachesoap/WSIFOperation_ApacheSOAP.java
Index: WSIFOperation_ApacheSOAP.java
===================================================================
RCS file:
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apachesoap/WSIFOperation_ApacheSOAP.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- WSIFOperation_ApacheSOAP.java 13 Jan 2003 20:40:21 -0000 1.36
+++ WSIFOperation_ApacheSOAP.java 21 Jan 2003 08:48:26 -0000 1.37
@@ -706,6 +706,11 @@
if (!isAsyncOperation() && returnType != null) {
respOK = buildResponseMessages(resp, output, fault);
}
+
+ if (resp instanceof Response) {
+ Header soapHeader = resp.getHeader();
+ addContextResponseSOAPHeaders(soapHeader);
+ }
Trc.exit(respOK);
return respOK;
@@ -890,6 +895,10 @@
Object retBean = bean.value;
}
}
+
+ Header soapHeader = env.getHeader();
+ addContextResponseSOAPHeaders(soapHeader);
+
Trc.exit(true);
return true;
}
@@ -1546,7 +1555,7 @@
}
try {
- name = WSIFConstants.CONTEXT_SOAP_HEADERS;
+ name = WSIFConstants.CONTEXT_REQUEST_SOAP_HEADERS;
o = context.getObjectPart(name);
if (o instanceof List) {
addSOAPHeader(call, name, (List) o);
@@ -1579,6 +1588,32 @@
} else if (name.equals(WSIFConstants.CONTEXT_HTTP_PSWD)) {
httpTransport.setPassword(value);
}
+ }
+ }
+
+ private void addContextResponseSOAPHeaders(Header soapHeader)
+ throws WSIFException {
+
+ if( soapHeader != null ) {
+ Vector headerEntries = soapHeader.getHeaderEntries();
+ if (headerEntries != null) {
+ ArrayList headers = new ArrayList();
+ for(Iterator i = headerEntries.iterator(); i.hasNext(); ) {
+ Object o = i.next();
+ if (o instanceof Element) {
+ headers.add(o);
+ } else {
+ Trc.event("unexpected response SOAP header type: ", o);
+ }
+ }
+ if (headers.size() > 0) {
+ WSIFMessage context = getContext();
+ context.setObjectPart(
+ WSIFConstants.CONTEXT_RESPONSE_SOAP_HEADERS,
+ headers);
+ setContext(context);
+ }
+ }
}
}