rubys       02/02/09 18:23:53

  Modified:    java/samples/echo EchoService.java deploy.wsdd
  Added:       java/samples/echo SOAPArrayStruct.java SOAPStructStruct.java
                        echoHeaderStringHandler.java
                        echoHeaderStructHandler.java
  Log:
  Server implementation of SOAPBuilders Interop Tests 2B & 2C
  
  Revision  Changes    Path
  1.15      +78 -1     xml-axis/java/samples/echo/EchoService.java
  
  Index: EchoService.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/echo/EchoService.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- EchoService.java  7 Feb 2002 23:23:11 -0000       1.14
  +++ EchoService.java  10 Feb 2002 02:23:53 -0000      1.15
  @@ -67,10 +67,61 @@
    * can be found at http://www.whitemesa.com/interop.htm .
    *
    * @author Sam Ruby <[EMAIL PROTECTED]>
  + * @author Simon Fell <[EMAIL PROTECTED]>
    */
   
  -public class EchoService {
  +public class EchoService implements org.apache.axis.wsdl.Skeleton {
   
  +    private static org.apache.axis.wsdl.SkeletonImpl skel = null;
  +    
  +    public EchoService() {
  +        init() ;
  +    }
  +    
  +    public String getParameterName(String opName, int i) {
  +        return skel.getParameterName(opName, i);
  +    }
  +
  +    public static String getParameterNameStatic(String opName, int i) {
  +        init();
  +        return skel.getParameterName(opName, i);
  +    }
  +    protected static void init() {
  +        if (skel != null) 
  +            return;
  +        skel = new org.apache.axis.wsdl.SkeletonImpl();
  +        skel.add("echoStructAsSimpleTypes",
  +                 new String[] {
  +                 null,
  +                 "inputStruct",
  +                 "outputString",
  +                 "outputInteger",
  +                 "outputFloat",
  +                 });
  +        skel.add("echoSimpleTypesAsStruct",
  +                 new String[] {
  +                 "return",
  +                 "inputString",
  +                 "inputInteger",
  +                 "inputFloat",
  +                 });
  +        skel.add("echo2DStringArray",
  +                 new String[] {
  +                 "return",
  +                 "input2DStringArray",
  +                 });
  +        skel.add("echoNestedStruct",
  +                 new String[] {
  +                 "return",
  +                 "inputStruct",
  +                 });
  +        skel.add("echoNestedArray",
  +                 new String[] {
  +                 "return",
  +                 "inputStruct",
  +                 });
  +    }
  +    
       /**
        * This method accepts a single string and echoes it back to the client.
        */
  @@ -185,5 +236,31 @@
        */
       public HashMap [] echoMapArray(HashMap [] input) {
           return input;
  +    }
  +    
  +    public void echoStructAsSimpleTypes(SOAPStruct inputStruct, 
  +                                        javax.xml.rpc.holders.StringHolder 
outputString, 
  +                                        javax.xml.rpc.holders.IntHolder 
outputInteger, 
  +                                        javax.xml.rpc.holders.FloatHolder 
outputFloat) {
  +        outputString.value = inputStruct.getVarString() ;
  +        outputInteger.value = inputStruct.getVarInt() ;
  +        outputFloat.value = inputStruct.getVarFloat() ;
  +    }
  +
  +    public SOAPStruct echoSimpleTypesAsStruct(java.lang.String inputString, int 
inputInteger, float inputFloat) {
  +        SOAPStruct s = new SOAPStruct(inputInteger, inputString, inputFloat) ;
  +        return s ;
  +    }
  +
  +    public java.lang.String[] echo2DStringArray(java.lang.String[] 
input2DStringArray) {
  +        return input2DStringArray ;
  +    }
  +
  +    public SOAPStructStruct echoNestedStruct(SOAPStructStruct inputStruct) {
  +        return inputStruct ;
  +    }
  +
  +    public SOAPArrayStruct echoNestedArray(SOAPArrayStruct inputStruct) {
  +        return inputStruct ;
       }
   }
  
  
  
  1.14      +12 -0     xml-axis/java/samples/echo/deploy.wsdd
  
  Index: deploy.wsdd
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/echo/deploy.wsdd,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- deploy.wsdd       6 Feb 2002 22:50:20 -0000       1.13
  +++ deploy.wsdd       10 Feb 2002 02:23:53 -0000      1.14
  @@ -12,6 +12,10 @@
     <service name="http://soapinterop.org/"; provider="java:RPC" >
       <parameter name="className" value="samples.echo.EchoService" />
       <parameter name="allowedMethods" value="*" />
  +    <beanMapping xmlns:echo="http://soapinterop.org/xsd"; 
qname="echo:SOAPStructStruct"
  +      languageSpecificType="java:samples.echo.SOAPStructStruct"/>    
  +    <beanMapping xmlns:echo="http://soapinterop.org/xsd"; 
qname="echo:SOAPArrayStruct"
  +      languageSpecificType="java:samples.echo.SOAPArrayStruct"/>   
       <beanMapping xmlns:echo="http://soapinterop.org/xsd"; qname="echo:SOAPStruct"
         languageSpecificType="java:samples.echo.SOAPStruct"/>    
       <typeMapping xmlns:echo="http://soapinterop.org/xsd";
  @@ -34,5 +38,13 @@
         type="java:float[]"
         serializer="org.apache.axis.encoding.ser.ArraySerializerFactory"
         deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory" />
  +    <requestFlow>
  +        <handler type="java:samples.echo.echoHeaderStringHandler"/>
  +        <handler type="java:samples.echo.echoHeaderStructHandler"/>
  +    </requestFlow>
  +    <responseFlow>
  +        <handler type="java:samples.echo.echoHeaderStringHandler"/>
  +        <handler type="java:samples.echo.echoHeaderStructHandler"/>
  +    </responseFlow>
     </service>
   </deployment>
  
  
  
  1.1                  xml-axis/java/samples/echo/SOAPArrayStruct.java
  
  Index: SOAPArrayStruct.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Axis" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package samples.echo;
  
  /**
   * @author Simon Fell <[EMAIL PROTECTED]>
   */
  
  public class SOAPArrayStruct implements java.io.Serializable {
      private java.lang.String varString;
      private int varInt;
      private float varFloat;
      private java.lang.String[] varArray;
  
      public SOAPArrayStruct() {
      }
  
      public SOAPArrayStruct( java.lang.String varString, 
                              int varInt, 
                              float varFloat, 
                              java.lang.String[] varArray) {
          this.varString = varString;
          this.varInt = varInt;
          this.varFloat = varFloat;
          this.varArray = varArray;
      }
  
      public java.lang.String getVarString() {
          return varString;
      }
  
      public void setVarString(java.lang.String varString) {
          this.varString = varString;
      }
  
      public int getVarInt() {
          return varInt;
      }
  
      public void setVarInt(int varInt) {
          this.varInt = varInt;
      }
  
      public float getVarFloat() {
          return varFloat;
      }
  
      public void setVarFloat(float varFloat) {
          this.varFloat = varFloat;
      }
  
      public java.lang.String[] getVarArray() {
          return varArray;
      }
  
      public void setVarArray(java.lang.String[] varArray) {
          this.varArray = varArray;
      }
  }
  
  
  
  1.1                  xml-axis/java/samples/echo/SOAPStructStruct.java
  
  Index: SOAPStructStruct.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Axis" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package samples.echo;
  
  /**
   * @author Simon Fell <[EMAIL PROTECTED]>
   */
  
  public class SOAPStructStruct implements java.io.Serializable {
      private java.lang.String varString;
      private int varInt;
      private float varFloat;
      private SOAPStruct varStruct;
  
      public SOAPStructStruct() {
      }
  
      public SOAPStructStruct(    java.lang.String varString, 
                                  int varInt, 
                                  float varFloat, 
                                  SOAPStruct varStruct) {
          this.varString = varString;
          this.varInt = varInt;
          this.varFloat = varFloat;
          this.varStruct = varStruct;
      }
  
      public java.lang.String getVarString() {
          return varString;
      }
  
      public void setVarString(java.lang.String varString) {
          this.varString = varString;
      }
  
      public int getVarInt() {
          return varInt;
      }
  
      public void setVarInt(int varInt) {
          this.varInt = varInt;
      }
  
      public float getVarFloat() {
          return varFloat;
      }
  
      public void setVarFloat(float varFloat) {
          this.varFloat = varFloat;
      }
  
      public SOAPStruct getVarStruct() {
          return varStruct;
      }
  
      public void setVarStruct(SOAPStruct varStruct) {
          this.varStruct = varStruct;
      }
  }
  
  
  
  1.1                  xml-axis/java/samples/echo/echoHeaderStringHandler.java
  
  Index: echoHeaderStringHandler.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Axis" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package samples.echo;
  
  import org.apache.axis.AxisFault;
  import org.apache.axis.Constants;
  import org.apache.axis.handlers.BasicHandler;
  import org.apache.axis.Message;
  import org.apache.axis.MessageContext;
  import org.apache.axis.message.SOAPEnvelope;
  import org.apache.axis.message.SOAPHeader;
  import org.apache.axis.utils.JavaUtils;
  import org.apache.log4j.Category;
  
  /** This handler processes the SOAP header "echoMeString" defined in the 
   *  SOAPBuilder Round2C interop tests.
   *
   * <p>Essentially, you install it on both the request and response chains of
   * your service, on the server side.</p>
   *
   * @author Simon Fell ([EMAIL PROTECTED])
   */
  public class echoHeaderStringHandler extends BasicHandler
  {
      static Category category =
              Category.getInstance(echoHeaderStringHandler.class.getName());
  
      public static final String ECHOHEADER_STRING_ID = "echoHeaderStringHandler.id";
      public static final String HEADER_NS = "http://soapinterop.org/echoheader/";;
      public static final String HEADER_REQNAME = "echoMeStringRequest";
      public static final String HEADER_RESNAME = "echoMeStringResponse";
      public static final String ACTOR_NEXT = 
"http://schemas.xmlsoap.org/soap/actor/next";;
      /**
       * Process a MessageContext.
       */
      public void invoke(MessageContext context) throws AxisFault
      {    
          if (context.getPastPivot()) {
              // This is a response.  Add the response header, if we saw
              // the requestHeader
              String strVal = (String)context.getProperty(ECHOHEADER_STRING_ID);
              if (strVal == null)
                  return;
              
              Message msg = context.getResponseMessage();
              if (msg == null)
                  return;
              SOAPEnvelope env = msg.getSOAPEnvelope();
              SOAPHeader header = new SOAPHeader(HEADER_NS,
                                                 HEADER_RESNAME,
                                                 strVal);
              env.addHeader(header);
          } else {
              // Request. look for the header
              Message msg = context.getRequestMessage();
              if (msg == null)
                  throw new AxisFault(JavaUtils.getMessage("noRequest00"));
              
              SOAPEnvelope env = msg.getSOAPEnvelope();
              SOAPHeader header = env.getHeaderByName(HEADER_NS,
                                                      HEADER_REQNAME);
              
              if (header != null) {
                  // seems Axis has already ignored any headers not tageted
                  // at us
                  String strVal ;
                  // header.getValue() doesn't seem to be connected to anything
                  // we always get null.
                  try {
                      strVal = (String)header.getValueAsType(Constants.XSD_STRING);
                  } catch (Exception e) {
                      throw AxisFault.makeFault(e);
                  }
                  context.setProperty(ECHOHEADER_STRING_ID, strVal) ;
              }
          }
      }
  }
  
  
  
  1.1                  xml-axis/java/samples/echo/echoHeaderStructHandler.java
  
  Index: echoHeaderStructHandler.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Axis" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package samples.echo;
  
  import org.apache.axis.AxisFault;
  import org.apache.axis.Constants;
  import org.apache.axis.handlers.BasicHandler;
  import org.apache.axis.Message;
  import org.apache.axis.MessageContext;
  import org.apache.axis.message.SOAPEnvelope;
  import org.apache.axis.message.SOAPHeader;
  import org.apache.axis.utils.JavaUtils;
  import org.apache.log4j.Category;
  
  import javax.xml.rpc.namespace.QName;
  /** This handler processes the SOAP header "echoMeStruct" defined in the 
   *  SOAPBuilder Round2C interop tests.
   *
   * <p>Essentially, you install it on both the request and response chains of
   * your service, on the server side.</p>
   *
   * @author Simon Fell ([EMAIL PROTECTED])
   */
  public class echoHeaderStructHandler extends BasicHandler
  {
      static Category category =
              Category.getInstance(echoHeaderStringHandler.class.getName());
  
      public static final String ECHOHEADER_STRUCT_ID = "echoHeaderStructHandler.id";
      public static final String HEADER_NS = "http://soapinterop.org/echoheader/";;
      public static final String HEADER_REQNAME = "echoMeStructRequest";
      public static final String HEADER_RESNAME = "echoMeStructResponse";
      public static final String ACTOR_NEXT = 
"http://schemas.xmlsoap.org/soap/actor/next";;
      public static final String STRUCT_NS = "http://soapinterop.org/xsd"; ;
      public static final String STRUCT_NAME = "SOAPStruct";
      public static final QName SOAPStructType = new QName(STRUCT_NS, STRUCT_NAME);
      /**
       * Process a MessageContext.
       */
      public void invoke(MessageContext context) throws AxisFault
      {    
          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();
              SOAPHeader header = new SOAPHeader(HEADER_NS,
                                                 HEADER_RESNAME,
                                                 hdrVal);
              env.addHeader(header);
          } else {
              // Request. look for the header
              Message msg = context.getRequestMessage();
              if (msg == null)
                  throw new AxisFault(JavaUtils.getMessage("noRequest00"));
              
              SOAPEnvelope env = msg.getSOAPEnvelope();
              SOAPHeader 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) ;
              }
          }
      }
  }
  
  
  


Reply via email to