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


Reply via email to