You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by an...@apache.org on 2003/01/21 09:48:26 UTC

cvs commit: xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apachesoap WSIFOperation_ApacheSOAP.java

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);
  +                }
  +   	        }
           }
       }