antelder    2002/11/15 08:46:45

  Modified:    java/src/org/apache/wsif/providers/soap/apacheaxis
                        WSIFOperation_ApacheAxis.java
  Added:       java/test/docStyle NWBankTest.java
               java/test/docStyle/wsifservice nwBank.wsdl
                        Currencyrates.java Currency.java nwBankLocal.wsdl
                        PwspNoCentrbankCurRatesSoap.java
                        ArrayOfCurrency.java
  Log:
  Another docstyle test for the axis provider and fix the axis operation so the test 
works
  
  Revision  Changes    Path
  1.1                  xml-axis-wsif/java/test/docStyle/NWBankTest.java
  
  Index: NWBankTest.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   *
   * Copyright (c) 2002 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 "WSIF" 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 and was
   * originally based on software copyright (c) 2001, 2002, International
   * Business Machines, Inc., http://www.apache.org.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package docStyle;
  
  import java.io.StringReader;
  import java.io.StringWriter;
  
  import junit.framework.Test;
  import junit.framework.TestCase;
  import junit.framework.TestSuite;
  
  import org.apache.wsif.WSIFMessage;
  import org.apache.wsif.WSIFOperation;
  import org.apache.wsif.WSIFPort;
  import org.apache.wsif.WSIFService;
  import org.apache.wsif.WSIFServiceFactory;
  import org.apache.xerces.parsers.DOMParser;
  import org.apache.xml.serialize.OutputFormat;
  import org.apache.xml.serialize.XMLSerializer;
  import org.w3c.dom.Element;
  import org.w3c.dom.Node;
  import org.w3c.dom.NodeList;
  import org.xml.sax.InputSource;
  
  import docStyle.wsifservice.Currencyrates;
  import docStyle.wsifservice.PwspNoCentrbankCurRatesSoap;
  import docStyle.wsifservice.ZipCodeResolverSoap;
  
  import util.TestUtilities;
  
  /**
   * Junit test to test out the AXIS provider docstyle support.
   * Uses the norwegian central bank daily rates service
   * (this has no input parts and returns complex types)
   */
  public class NWBankTest extends TestCase {
        String wsdlLocation =
                TestUtilities.getWsdlPath("java\\test\\docStyle\\wsifservice")
                        + "nwBank.wsdl";
  //            + "nwBankLocal.wsdl";
  
        public NWBankTest(String name) {
                super(name);
        }
  
        public static void main(String[] args) {
                junit.textui.TestRunner.run(suite());
        }
  
        public static Test suite() {
                return new TestSuite(NWBankTest.class);
        }
  
        public void setUp() {
                TestUtilities.setUpExtensionsAndProviders();
        }
  
        public void testDynamicAxis() {
                doitDyn("pwspNoCentrbankCurRatesSoap", "axis");
  //TODO                doitStub("pwspNoCentrbankCurRatesSoap", "axis"); 
        }
  
        private void doitDyn(String portName, String protocol) {
                if (portName.toUpperCase().indexOf("JMS") != -1
                        && !TestUtilities.areWeTesting("jms"))
                        return;
  
                TestUtilities.setProviderForProtocol(protocol);
  
                try {
                        WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
                        WSIFService service =
                                factory.getService(
                                        wsdlLocation,
                                        null,
                                        null,
                                        "http/www.pointwsp.net/ws/finance",
                                        "pwspNoCentrbankCurRatesSoap");
  
              service.mapType(
                 new javax.xml.namespace.QName("http/www.pointwsp.net/ws/finance", 
"currencyrates"),
                 docStyle.wsifservice.Currencyrates.class );
  
              service.mapType(
                 new javax.xml.namespace.QName("http/www.pointwsp.net/ws/finance", 
"ArrayOfCurrency"),
                 docStyle.wsifservice.ArrayOfCurrency.class);
  
              service.mapType(
                 new javax.xml.namespace.QName("http/www.pointwsp.net/ws/finance", 
"currency"),
                 docStyle.wsifservice.Currency.class);
  
                        WSIFPort port = service.getPort(portName);
  
                        WSIFOperation operation = port.createOperation("GetRatesXML");
  
                        WSIFMessage inMsg = operation.createInputMessage();
                        WSIFMessage outMsg = operation.createOutputMessage();
                        WSIFMessage faultMsg = operation.createFaultMessage();
                        
                        boolean ok =
                                operation.executeRequestResponseOperation(
                                        inMsg,
                                        outMsg,
                                        faultMsg);
  
                        assertTrue("operation returned false!!", ok);
                        Object o =  outMsg.getObjectPart("GetRatesXMLResult");
                        assertTrue("unexpected result: " + o, o instanceof 
Currencyrates);
            
  //            Currencyrates cr = (Currencyrates) o;
  //            System.out.println("source=" + cr.getSource());
  
                } catch (Exception ex) {
                        ex.printStackTrace();
                        assertTrue(
                                "AddressBookTest("
                                        + portName
                                        + ") caught exception "
                                        + ex.getLocalizedMessage(),
                                false);
                }
        }
  
        private void doitStub(String portName, String protocol) {
                if (portName.toUpperCase().indexOf("JMS") != -1
                        && !TestUtilities.areWeTesting("jms"))
                        return;
  
                TestUtilities.setProviderForProtocol(protocol);
  
                try {
                        WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
                        WSIFService service =
                                factory.getService(
                                        wsdlLocation,
                                        null,
                                        null,
                                        "http/www.pointwsp.net/ws/finance",
                                        "pwspNoCentrbankCurRatesSoap");
  
              PwspNoCentrbankCurRatesSoap stub = (PwspNoCentrbankCurRatesSoap) 
service.getStub(portName, PwspNoCentrbankCurRatesSoap.class);
  
              Object o = stub.GetRatesXML();
                        assertTrue("unexpected result: " + o, o instanceof 
Currencyrates);
              Currencyrates cr = (Currencyrates) o;
              System.out.println("source=" + cr.getSource());
  
                } catch (Exception ex) {
                        ex.printStackTrace();
                        assertTrue(
                                "AddressBookTest("
                                        + portName
                                        + ") caught exception "
                                        + ex.getLocalizedMessage(),
                                false);
                }
        }
  
        private void doitMessaging(String portName, String protocol) {
                if (portName.toUpperCase().indexOf("JMS") != -1
                        && !TestUtilities.areWeTesting("jms"))
                        return;
  
                TestUtilities.setProviderForProtocol(protocol);
  
                try {
                        WSIFServiceFactory factory = WSIFServiceFactory.newInstance();
                        WSIFService service =
                                factory.getService(
                                        wsdlLocation,
                                        null,
                                        null,
                                        "http://webservices.eraserver.net/";,
                                        "ZipCodeResolverSoap");
  
                        WSIFPort port = service.getPort(portName);
                        WSIFOperation operation = port.createOperation("ShortZipCode");
                        WSIFMessage inMsg = operation.createInputMessage();
                        WSIFMessage outMsg = operation.createOutputMessage();
                        WSIFMessage faultMsg = operation.createFaultMessage();
  
                        String inputDocument =
                                "<ShortZipCode 
xmlns=\"http://webservices.eraserver.net/\";>"
                                        + "<accessCode>9999</accessCode>"
                                        + "<address>607 Trinity</address>"
                                        + "<city>Austin</city>"
                                        + "<state>TX</state>"
                                        + "</ShortZipCode>";
  
                        DOMParser parser = new DOMParser();
                        String xmlString = "<?xml version=\"1.0\"?>\n" + inputDocument;
                        parser.parse(new InputSource(new StringReader(xmlString)));
                        Element element = parser.getDocument().getDocumentElement();
                        //printElement(element);
  
                        inMsg.setObjectPart("parameters", element);
  
                        boolean ok =
                                operation.executeRequestResponseOperation(
                                        inMsg,
                                        outMsg,
                                        faultMsg);
                        assertTrue("operation returned false!!", ok);
  
                        Element responseElement =
                                (Element) outMsg.getObjectPart("parameters");
                        assertTrue("return element is null!!", responseElement != 
null);
                        //                      printElement(responseElement);
  
                        NodeList nl = responseElement.getChildNodes();
                        Node n = nl.item(0); // "ShortZipCodeResponse"
                        nl = n.getChildNodes();
                        n = nl.item(0); // "ShortZipCodeResult"
                        String s = n.getNodeValue();
                        if (!"78701".equals(s)) {
                                printElement(responseElement);
                        }
                        assertTrue("wrong zipcode: " + s + "!!", "78701".equals(s));
  
                } catch (Exception ex) {
                        ex.printStackTrace();
                        assertTrue(
                                "AddressBookTest("
                                        + portName
                                        + ") caught exception "
                                        + ex.getLocalizedMessage(),
                                false);
                }
        }
  
        private void printElement(Element e) throws Exception {
                OutputFormat of = new OutputFormat(e.getOwnerDocument(), "UTF-8", 
true);
                XMLSerializer xmls = new XMLSerializer(of);
                StringWriter sw = new StringWriter();
                xmls.setOutputCharStream(sw);
                xmls.serialize(e);
                System.err.println("element=" + sw.toString());
        }
  }
  
  
  
  1.1                  xml-axis-wsif/java/test/docStyle/wsifservice/nwBank.wsdl
  
  Index: nwBank.wsdl
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  <definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"; 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:s="http://www.w3.org/2001/XMLSchema"; xmlns:s0="http/www.pointwsp.net/ws/finance" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"; 
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"; 
targetNamespace="http/www.pointwsp.net/ws/finance" 
xmlns="http://schemas.xmlsoap.org/wsdl/";>
    <types>
      <s:schema elementFormDefault="qualified" 
targetNamespace="http/www.pointwsp.net/ws/finance">
        <s:element name="GetRatesXML">
          <s:complexType />
        </s:element>
        <s:element name="GetRatesXMLResponse">
          <s:complexType>
            <s:sequence>
  
              <s:element minOccurs="0" maxOccurs="1" name="GetRatesXMLResult" 
type="s0:currencyrates" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:complexType name="currencyrates">
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="source" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="basecurrency" type="s:string" 
/>
            <s:element minOccurs="0" maxOccurs="1" name="ratelist" 
type="s0:ArrayOfCurrency" />
  
          </s:sequence>
        </s:complexType>
        <s:complexType name="ArrayOfCurrency">
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="unbounded" name="currency" 
nillable="true" type="s0:currency" />
          </s:sequence>
        </s:complexType>
        <s:complexType name="currency">
          <s:sequence>
  
            <s:element minOccurs="1" maxOccurs="1" name="ratedate" type="s:dateTime" 
/>
            <s:element minOccurs="0" maxOccurs="1" name="code" type="s:string" />
            <s:element minOccurs="1" maxOccurs="1" name="unit" type="s:int" />
            <s:element minOccurs="1" maxOccurs="1" name="rate" type="s:decimal" />
          </s:sequence>
        </s:complexType>
        <s:element name="currencyrates" nillable="true" type="s0:currencyrates" />
      </s:schema>
    </types>
  
    <message name="GetRatesXMLSoapIn">
      <part name="parameters" element="s0:GetRatesXML" />
    </message>
    <message name="GetRatesXMLSoapOut">
      <part name="parameters" element="s0:GetRatesXMLResponse" />
    </message>
    <message name="GetRatesXMLHttpGetIn" />
    <message name="GetRatesXMLHttpGetOut">
      <part name="Body" element="s0:currencyrates" />
  
    </message>
    <message name="GetRatesXMLHttpPostIn" />
    <message name="GetRatesXMLHttpPostOut">
      <part name="Body" element="s0:currencyrates" />
    </message>
    <portType name="pwspNoCentrbankCurRatesSoap">
      <operation name="GetRatesXML">
        <documentation>Last daily rates quoted by norwegian central 
bank</documentation>
  
        <input message="s0:GetRatesXMLSoapIn" />
        <output message="s0:GetRatesXMLSoapOut" />
      </operation>
    </portType>
    <portType name="pwspNoCentrbankCurRatesHttpGet">
      <operation name="GetRatesXML">
        <documentation>Last daily rates quoted by norwegian central 
bank</documentation>
        <input message="s0:GetRatesXMLHttpGetIn" />
  
        <output message="s0:GetRatesXMLHttpGetOut" />
      </operation>
    </portType>
    <portType name="pwspNoCentrbankCurRatesHttpPost">
      <operation name="GetRatesXML">
        <documentation>Last daily rates quoted by norwegian central 
bank</documentation>
        <input message="s0:GetRatesXMLHttpPostIn" />
        <output message="s0:GetRatesXMLHttpPostOut" />
  
      </operation>
    </portType>
    <binding name="pwspNoCentrbankCurRatesSoap" type="s0:pwspNoCentrbankCurRatesSoap">
      <soap:binding transport="http://schemas.xmlsoap.org/soap/http"; style="document" 
/>
      <operation name="GetRatesXML">
        <soap:operation soapAction="http/www.pointwsp.net/ws/finance/GetRatesXML" 
style="document" />
        <input>
          <soap:body use="literal" />
        </input>
  
        <output>
          <soap:body use="literal" />
        </output>
      </operation>
    </binding>
    <binding name="pwspNoCentrbankCurRatesHttpGet" 
type="s0:pwspNoCentrbankCurRatesHttpGet">
      <http:binding verb="GET" />
      <operation name="GetRatesXML">
        <http:operation location="/GetRatesXML" />
  
        <input>
          <http:urlEncoded />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
    </binding>
    <binding name="pwspNoCentrbankCurRatesHttpPost" 
type="s0:pwspNoCentrbankCurRatesHttpPost">
  
      <http:binding verb="POST" />
      <operation name="GetRatesXML">
        <http:operation location="/GetRatesXML" />
        <input>
          <mime:content type="application/x-www-form-urlencoded" />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
  
      </operation>
    </binding>
    <service name="pwspNoCentrbankCurRates">
      <documentation>Shows norwegian central bank daily rates</documentation>
      <port name="pwspNoCentrbankCurRatesSoap" 
binding="s0:pwspNoCentrbankCurRatesSoap">
        <soap:address location="http://server1.pointwsp.net/ws/finance/currency.asmx"; 
/>
      </port>
      <port name="pwspNoCentrbankCurRatesHttpGet" 
binding="s0:pwspNoCentrbankCurRatesHttpGet">
  
        <http:address location="http://server1.pointwsp.net/ws/finance/currency.asmx"; 
/>
      </port>
      <port name="pwspNoCentrbankCurRatesHttpPost" 
binding="s0:pwspNoCentrbankCurRatesHttpPost">
        <http:address location="http://server1.pointwsp.net/ws/finance/currency.asmx"; 
/>
      </port>
    </service>
  </definitions>
  
  
  1.1                  xml-axis-wsif/java/test/docStyle/wsifservice/Currencyrates.java
  
  Index: Currencyrates.java
  ===================================================================
  /**
   * Currencyrates.java
   *
   * This file was auto-generated from WSDL
   * by the Apache Axis WSDL2Java emitter.
   */
  
  package docStyle.wsifservice;
  
  public class Currencyrates  implements java.io.Serializable {
      private java.lang.String source;
      private java.lang.String basecurrency;
      private docStyle.wsifservice.ArrayOfCurrency ratelist;
  
      public Currencyrates() {
      }
  
      public java.lang.String getSource() {
          return source;
      }
  
      public void setSource(java.lang.String source) {
          this.source = source;
      }
  
      public java.lang.String getBasecurrency() {
          return basecurrency;
      }
  
      public void setBasecurrency(java.lang.String basecurrency) {
          this.basecurrency = basecurrency;
      }
  
      public docStyle.wsifservice.ArrayOfCurrency getRatelist() {
          return ratelist;
      }
  
      public void setRatelist(docStyle.wsifservice.ArrayOfCurrency ratelist) {
          this.ratelist = ratelist;
      }
  
      private java.lang.Object __equalsCalc = null;
      public synchronized boolean equals(java.lang.Object obj) {
          if (!(obj instanceof Currencyrates)) return false;
          Currencyrates other = (Currencyrates) obj;
          if (obj == null) return false;
          if (this == obj) return true;
          if (__equalsCalc != null) {
              return (__equalsCalc == obj);
          }
          __equalsCalc = obj;
          boolean _equals;
          _equals = true && 
              ((source==null && other.getSource()==null) || 
               (source!=null &&
                source.equals(other.getSource()))) &&
              ((basecurrency==null && other.getBasecurrency()==null) || 
               (basecurrency!=null &&
                basecurrency.equals(other.getBasecurrency()))) &&
              ((ratelist==null && other.getRatelist()==null) || 
               (ratelist!=null &&
                ratelist.equals(other.getRatelist())));
          __equalsCalc = null;
          return _equals;
      }
  
      private boolean __hashCodeCalc = false;
      public synchronized int hashCode() {
          if (__hashCodeCalc) {
              return 0;
          }
          __hashCodeCalc = true;
          int _hashCode = 1;
          if (getSource() != null) {
              _hashCode += getSource().hashCode();
          }
          if (getBasecurrency() != null) {
              _hashCode += getBasecurrency().hashCode();
          }
          if (getRatelist() != null) {
              _hashCode += getRatelist().hashCode();
          }
          __hashCodeCalc = false;
          return _hashCode;
      }
  
      // Type metadata
      private static org.apache.axis.description.TypeDesc typeDesc =
          new org.apache.axis.description.TypeDesc(Currencyrates.class);
  
      static {
          org.apache.axis.description.FieldDesc field = new 
org.apache.axis.description.ElementDesc();
          field.setFieldName("source");
          field.setXmlName(new 
javax.xml.namespace.QName("http/www.pointwsp.net/ws/finance", "source"));
          field.setXmlType(new 
javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema";, "string"));
          field.setMinOccursIs0(true);
          typeDesc.addFieldDesc(field);
          field = new org.apache.axis.description.ElementDesc();
          field.setFieldName("basecurrency");
          field.setXmlName(new 
javax.xml.namespace.QName("http/www.pointwsp.net/ws/finance", "basecurrency"));
          field.setXmlType(new 
javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema";, "string"));
          field.setMinOccursIs0(true);
          typeDesc.addFieldDesc(field);
          field = new org.apache.axis.description.ElementDesc();
          field.setFieldName("ratelist");
          field.setXmlName(new 
javax.xml.namespace.QName("http/www.pointwsp.net/ws/finance", "ratelist"));
          field.setXmlType(new 
javax.xml.namespace.QName("http/www.pointwsp.net/ws/finance", "ArrayOfCurrency"));
          field.setMinOccursIs0(true);
          typeDesc.addFieldDesc(field);
      };
  
      /**
       * Return type metadata object
       */
      public static org.apache.axis.description.TypeDesc getTypeDesc() {
          return typeDesc;
      }
  
      /**
       * Get Custom Serializer
       */
      public static org.apache.axis.encoding.Serializer getSerializer(
             java.lang.String mechType, 
             java.lang.Class _javaType,  
             javax.xml.namespace.QName _xmlType) {
          return 
            new  org.apache.axis.encoding.ser.BeanSerializer(
              _javaType, _xmlType, typeDesc);
      }
  
      /**
       * Get Custom Deserializer
       */
      public static org.apache.axis.encoding.Deserializer getDeserializer(
             java.lang.String mechType, 
             java.lang.Class _javaType,  
             javax.xml.namespace.QName _xmlType) {
          return 
            new  org.apache.axis.encoding.ser.BeanDeserializer(
              _javaType, _xmlType, typeDesc);
      }
  
  }
  
  
  
  1.1                  xml-axis-wsif/java/test/docStyle/wsifservice/Currency.java
  
  Index: Currency.java
  ===================================================================
  /**
   * Currency.java
   *
   * This file was auto-generated from WSDL
   * by the Apache Axis WSDL2Java emitter.
   */
  
  package docStyle.wsifservice;
  
  public class Currency  implements java.io.Serializable {
      private java.util.Calendar ratedate;
      private java.lang.String code;
      private int unit;
      private java.math.BigDecimal rate;
  
      public Currency() {
      }
  
      public java.util.Calendar getRatedate() {
          return ratedate;
      }
  
      public void setRatedate(java.util.Calendar ratedate) {
          this.ratedate = ratedate;
      }
  
      public java.lang.String getCode() {
          return code;
      }
  
      public void setCode(java.lang.String code) {
          this.code = code;
      }
  
      public int getUnit() {
          return unit;
      }
  
      public void setUnit(int unit) {
          this.unit = unit;
      }
  
      public java.math.BigDecimal getRate() {
          return rate;
      }
  
      public void setRate(java.math.BigDecimal rate) {
          this.rate = rate;
      }
  
      private java.lang.Object __equalsCalc = null;
      public synchronized boolean equals(java.lang.Object obj) {
          if (!(obj instanceof Currency)) return false;
          Currency other = (Currency) obj;
          if (obj == null) return false;
          if (this == obj) return true;
          if (__equalsCalc != null) {
              return (__equalsCalc == obj);
          }
          __equalsCalc = obj;
          boolean _equals;
          _equals = true && 
              ((ratedate==null && other.getRatedate()==null) || 
               (ratedate!=null &&
                ratedate.equals(other.getRatedate()))) &&
              ((code==null && other.getCode()==null) || 
               (code!=null &&
                code.equals(other.getCode()))) &&
              unit == other.getUnit() &&
              ((rate==null && other.getRate()==null) || 
               (rate!=null &&
                rate.equals(other.getRate())));
          __equalsCalc = null;
          return _equals;
      }
  
      private boolean __hashCodeCalc = false;
      public synchronized int hashCode() {
          if (__hashCodeCalc) {
              return 0;
          }
          __hashCodeCalc = true;
          int _hashCode = 1;
          if (getRatedate() != null) {
              _hashCode += getRatedate().hashCode();
          }
          if (getCode() != null) {
              _hashCode += getCode().hashCode();
          }
          _hashCode += getUnit();
          if (getRate() != null) {
              _hashCode += getRate().hashCode();
          }
          __hashCodeCalc = false;
          return _hashCode;
      }
  
      // Type metadata
      private static org.apache.axis.description.TypeDesc typeDesc =
          new org.apache.axis.description.TypeDesc(Currency.class);
  
      static {
          org.apache.axis.description.FieldDesc field = new 
org.apache.axis.description.ElementDesc();
          field.setFieldName("ratedate");
          field.setXmlName(new 
javax.xml.namespace.QName("http/www.pointwsp.net/ws/finance", "ratedate"));
          field.setXmlType(new 
javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema";, "dateTime"));
          typeDesc.addFieldDesc(field);
          field = new org.apache.axis.description.ElementDesc();
          field.setFieldName("code");
          field.setXmlName(new 
javax.xml.namespace.QName("http/www.pointwsp.net/ws/finance", "code"));
          field.setXmlType(new 
javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema";, "string"));
          field.setMinOccursIs0(true);
          typeDesc.addFieldDesc(field);
          field = new org.apache.axis.description.ElementDesc();
          field.setFieldName("unit");
          field.setXmlName(new 
javax.xml.namespace.QName("http/www.pointwsp.net/ws/finance", "unit"));
          field.setXmlType(new 
javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema";, "int"));
          typeDesc.addFieldDesc(field);
          field = new org.apache.axis.description.ElementDesc();
          field.setFieldName("rate");
          field.setXmlName(new 
javax.xml.namespace.QName("http/www.pointwsp.net/ws/finance", "rate"));
          field.setXmlType(new 
javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema";, "decimal"));
          typeDesc.addFieldDesc(field);
      };
  
      /**
       * Return type metadata object
       */
      public static org.apache.axis.description.TypeDesc getTypeDesc() {
          return typeDesc;
      }
  
      /**
       * Get Custom Serializer
       */
      public static org.apache.axis.encoding.Serializer getSerializer(
             java.lang.String mechType, 
             java.lang.Class _javaType,  
             javax.xml.namespace.QName _xmlType) {
          return 
            new  org.apache.axis.encoding.ser.BeanSerializer(
              _javaType, _xmlType, typeDesc);
      }
  
      /**
       * Get Custom Deserializer
       */
      public static org.apache.axis.encoding.Deserializer getDeserializer(
             java.lang.String mechType, 
             java.lang.Class _javaType,  
             javax.xml.namespace.QName _xmlType) {
          return 
            new  org.apache.axis.encoding.ser.BeanDeserializer(
              _javaType, _xmlType, typeDesc);
      }
  
  }
  
  
  
  1.1                  xml-axis-wsif/java/test/docStyle/wsifservice/nwBankLocal.wsdl
  
  Index: nwBankLocal.wsdl
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  <definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"; 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:s="http://www.w3.org/2001/XMLSchema"; xmlns:s0="http/www.pointwsp.net/ws/finance" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"; 
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"; 
targetNamespace="http/www.pointwsp.net/ws/finance" 
xmlns="http://schemas.xmlsoap.org/wsdl/";>
    <types>
      <s:schema elementFormDefault="qualified" 
targetNamespace="http/www.pointwsp.net/ws/finance">
        <s:element name="GetRatesXML">
          <s:complexType />
        </s:element>
        <s:element name="GetRatesXMLResponse">
          <s:complexType>
            <s:sequence>
  
              <s:element minOccurs="0" maxOccurs="1" name="GetRatesXMLResult" 
type="s0:currencyrates" />
            </s:sequence>
          </s:complexType>
        </s:element>
        <s:complexType name="currencyrates">
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="source" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="basecurrency" type="s:string" 
/>
            <s:element minOccurs="0" maxOccurs="1" name="ratelist" 
type="s0:ArrayOfCurrency" />
  
          </s:sequence>
        </s:complexType>
        <s:complexType name="ArrayOfCurrency">
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="unbounded" name="currency" 
nillable="true" type="s0:currency" />
          </s:sequence>
        </s:complexType>
        <s:complexType name="currency">
          <s:sequence>
  
            <s:element minOccurs="1" maxOccurs="1" name="ratedate" type="s:dateTime" 
/>
            <s:element minOccurs="0" maxOccurs="1" name="code" type="s:string" />
            <s:element minOccurs="1" maxOccurs="1" name="unit" type="s:int" />
            <s:element minOccurs="1" maxOccurs="1" name="rate" type="s:decimal" />
          </s:sequence>
        </s:complexType>
        <s:element name="currencyrates" nillable="true" type="s0:currencyrates" />
      </s:schema>
    </types>
  
    <message name="GetRatesXMLSoapIn">
      <part name="parameters" element="s0:GetRatesXML" />
    </message>
    <message name="GetRatesXMLSoapOut">
      <part name="parameters" element="s0:GetRatesXMLResponse" />
    </message>
    <message name="GetRatesXMLHttpGetIn" />
    <message name="GetRatesXMLHttpGetOut">
      <part name="Body" element="s0:currencyrates" />
  
    </message>
    <message name="GetRatesXMLHttpPostIn" />
    <message name="GetRatesXMLHttpPostOut">
      <part name="Body" element="s0:currencyrates" />
    </message>
    <portType name="pwspNoCentrbankCurRatesSoap">
      <operation name="GetRatesXML">
        <documentation>Last daily rates quoted by norwegian central 
bank</documentation>
  
        <input message="s0:GetRatesXMLSoapIn" />
        <output message="s0:GetRatesXMLSoapOut" />
      </operation>
    </portType>
    <portType name="pwspNoCentrbankCurRatesHttpGet">
      <operation name="GetRatesXML">
        <documentation>Last daily rates quoted by norwegian central 
bank</documentation>
        <input message="s0:GetRatesXMLHttpGetIn" />
  
        <output message="s0:GetRatesXMLHttpGetOut" />
      </operation>
    </portType>
    <portType name="pwspNoCentrbankCurRatesHttpPost">
      <operation name="GetRatesXML">
        <documentation>Last daily rates quoted by norwegian central 
bank</documentation>
        <input message="s0:GetRatesXMLHttpPostIn" />
        <output message="s0:GetRatesXMLHttpPostOut" />
  
      </operation>
    </portType>
    <binding name="pwspNoCentrbankCurRatesSoap" type="s0:pwspNoCentrbankCurRatesSoap">
      <soap:binding transport="http://schemas.xmlsoap.org/soap/http"; style="document" 
/>
      <operation name="GetRatesXML">
        <soap:operation soapAction="http/www.pointwsp.net/ws/finance/GetRatesXML" 
style="document" />
        <input>
          <soap:body use="literal" />
        </input>
  
        <output>
          <soap:body use="literal" />
        </output>
      </operation>
    </binding>
    <binding name="pwspNoCentrbankCurRatesHttpGet" 
type="s0:pwspNoCentrbankCurRatesHttpGet">
      <http:binding verb="GET" />
      <operation name="GetRatesXML">
        <http:operation location="/GetRatesXML" />
  
        <input>
          <http:urlEncoded />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
      </operation>
    </binding>
    <binding name="pwspNoCentrbankCurRatesHttpPost" 
type="s0:pwspNoCentrbankCurRatesHttpPost">
  
      <http:binding verb="POST" />
      <operation name="GetRatesXML">
        <http:operation location="/GetRatesXML" />
        <input>
          <mime:content type="application/x-www-form-urlencoded" />
        </input>
        <output>
          <mime:mimeXml part="Body" />
        </output>
  
      </operation>
    </binding>
    <service name="pwspNoCentrbankCurRates">
      <documentation>Shows norwegian central bank daily rates</documentation>
      <port name="pwspNoCentrbankCurRatesSoap" 
binding="s0:pwspNoCentrbankCurRatesSoap">
  <!--  <soap:address location="http://server1.pointwsp.net/ws/finance/currency.asmx"; 
/> -->
        <soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/> 
      </port>
      <port name="pwspNoCentrbankCurRatesHttpGet" 
binding="s0:pwspNoCentrbankCurRatesHttpGet">
  
        <http:address location="http://server1.pointwsp.net/ws/finance/currency.asmx"; 
/>
      </port>
      <port name="pwspNoCentrbankCurRatesHttpPost" 
binding="s0:pwspNoCentrbankCurRatesHttpPost">
        <http:address location="http://server1.pointwsp.net/ws/finance/currency.asmx"; 
/>
      </port>
    </service>
  </definitions>
  
  
  1.1                  
xml-axis-wsif/java/test/docStyle/wsifservice/PwspNoCentrbankCurRatesSoap.java
  
  Index: PwspNoCentrbankCurRatesSoap.java
  ===================================================================
  /**
   * PwspNoCentrbankCurRatesSoap.java
   *
   * This file was auto-generated from WSDL
   * by the Apache Axis WSDL2Java emitter.
   */
  
  package docStyle.wsifservice;
  
  
  
  public interface PwspNoCentrbankCurRatesSoap extends java.rmi.Remote {
  
      /**
       * Last daily rates quoted by norwegian central bank
       */
      public docStyle.wsifservice.Currencyrates GetRatesXML() throws 
java.rmi.RemoteException;
  }
  
  
  
  1.1                  
xml-axis-wsif/java/test/docStyle/wsifservice/ArrayOfCurrency.java
  
  Index: ArrayOfCurrency.java
  ===================================================================
  /**
   * ArrayOfCurrency.java
   *
   * This file was auto-generated from WSDL
   * by the Apache Axis WSDL2Java emitter.
   */
  
  package docStyle.wsifservice;
  
  public class ArrayOfCurrency  implements java.io.Serializable {
      private docStyle.wsifservice.Currency[] currency;
  
      public ArrayOfCurrency() {
      }
  
      public docStyle.wsifservice.Currency[] getCurrency() {
          return currency;
      }
  
      public void setCurrency(docStyle.wsifservice.Currency[] currency) {
          this.currency = currency;
      }
  
      public docStyle.wsifservice.Currency getCurrency(int i) {
          return currency[i];
      }
  
      public void setCurrency(int i, docStyle.wsifservice.Currency value) {
          this.currency[i] = value;
      }
  
      private java.lang.Object __equalsCalc = null;
      public synchronized boolean equals(java.lang.Object obj) {
          if (!(obj instanceof ArrayOfCurrency)) return false;
          ArrayOfCurrency other = (ArrayOfCurrency) obj;
          if (obj == null) return false;
          if (this == obj) return true;
          if (__equalsCalc != null) {
              return (__equalsCalc == obj);
          }
          __equalsCalc = obj;
          boolean _equals;
          _equals = true && 
              ((currency==null && other.getCurrency()==null) || 
               (currency!=null &&
                java.util.Arrays.equals(currency, other.getCurrency())));
          __equalsCalc = null;
          return _equals;
      }
  
      private boolean __hashCodeCalc = false;
      public synchronized int hashCode() {
          if (__hashCodeCalc) {
              return 0;
          }
          __hashCodeCalc = true;
          int _hashCode = 1;
          if (getCurrency() != null) {
              for (int i=0;
                   i<java.lang.reflect.Array.getLength(getCurrency());
                   i++) {
                  java.lang.Object obj = java.lang.reflect.Array.get(getCurrency(), i);
                  if (obj != null &&
                      !obj.getClass().isArray()) {
                      _hashCode += obj.hashCode();
                  }
              }
          }
          __hashCodeCalc = false;
          return _hashCode;
      }
  
      // Type metadata
      private static org.apache.axis.description.TypeDesc typeDesc =
          new org.apache.axis.description.TypeDesc(ArrayOfCurrency.class);
  
      static {
          org.apache.axis.description.FieldDesc field = new 
org.apache.axis.description.ElementDesc();
          field.setFieldName("currency");
          field.setXmlName(new 
javax.xml.namespace.QName("http/www.pointwsp.net/ws/finance", "currency"));
          field.setMinOccursIs0(true);
          typeDesc.addFieldDesc(field);
      };
  
      /**
       * Return type metadata object
       */
      public static org.apache.axis.description.TypeDesc getTypeDesc() {
          return typeDesc;
      }
  
      /**
       * Get Custom Serializer
       */
      public static org.apache.axis.encoding.Serializer getSerializer(
             java.lang.String mechType, 
             java.lang.Class _javaType,  
             javax.xml.namespace.QName _xmlType) {
          return 
            new  org.apache.axis.encoding.ser.BeanSerializer(
              _javaType, _xmlType, typeDesc);
      }
  
      /**
       * Get Custom Deserializer
       */
      public static org.apache.axis.encoding.Deserializer getDeserializer(
             java.lang.String mechType, 
             java.lang.Class _javaType,  
             javax.xml.namespace.QName _xmlType) {
          return 
            new  org.apache.axis.encoding.ser.BeanDeserializer(
              _javaType, _xmlType, typeDesc);
      }
  
  }
  
  
  
  1.34      +40 -44    
xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFOperation_ApacheAxis.java
  
  Index: WSIFOperation_ApacheAxis.java
  ===================================================================
  RCS file: 
/home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/soap/apacheaxis/WSIFOperation_ApacheAxis.java,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- WSIFOperation_ApacheAxis.java     15 Nov 2002 09:32:36 -0000      1.33
  +++ WSIFOperation_ApacheAxis.java     15 Nov 2002 16:46:45 -0000      1.34
  @@ -388,6 +388,28 @@
                return;
        }
   
  +     public boolean executeRequestResponseOperation(
  +             WSIFMessage inMsg,
  +             WSIFMessage outMsg,
  +             WSIFMessage faultMsg)
  +             throws WSIFException {
  +
  +             Trc.entry(this, inMsg, outMsg, faultMsg);
  +             close();
  +             setAsyncOperation(false);
  +
  +             boolean succ;
  +             if ("document".equals(style)) {
  +                     succ =
  +                             invokeRequestResponseOperationDocument(inMsg, outMsg, 
faultMsg);
  +             } else {
  +                     succ = invokeRequestResponseOperation(inMsg, outMsg, faultMsg);
  +             }
  +
  +             Trc.exit(succ);
  +             return succ;
  +     }
  +
        /**
         * Performs a request response operation asynchronously.
         * 
  @@ -774,28 +796,6 @@
           Trc.exit();
       }
   
  -     public boolean executeRequestResponseOperation(
  -             WSIFMessage inMsg,
  -             WSIFMessage outMsg,
  -             WSIFMessage faultMsg)
  -             throws WSIFException {
  -
  -             Trc.entry(this, inMsg, outMsg, faultMsg);
  -             close();
  -             setAsyncOperation(false);
  -
  -             boolean succ;
  -             if ("document".equals(style)) {
  -                     succ =
  -                             invokeRequestResponseOperationDocument(inMsg, outMsg, 
faultMsg);
  -             } else {
  -                     succ = invokeRequestResponseOperation(inMsg, outMsg, faultMsg);
  -             }
  -
  -             Trc.exit(succ);
  -             return succ;
  -     }
  -
        public boolean invokeRequestResponseOperation(
                WSIFMessage wsifmessage,
                WSIFMessage wsifmessage1,
  @@ -922,15 +922,11 @@
                boolean workedOK = false;
   
                Call call = portInstance.getCall();
  -        Service service = new Service();
  -             try {
  -                     call = (Call) service.createCall();
  -             } catch (ServiceException ex) {
  -                     throw new WSIFException("ex creating call: " + 
ex.getLocalizedMessage(), ex);
  -             }
  - 
                call.setSOAPActionURI(getSoapActionURI());
                call.setTargetEndpointAddress(portInstance.getEndPoint());
  +             call.setEncodingStyle(null);
  +             inputEncodingStyle = "";
  +             outputEncodingStyle = "";
   
                Input inputMsg = operation.getInput();
                if (inputMsg != null) {
  @@ -972,17 +968,21 @@
        }
   
        private boolean isMessaging(WSIFMessage msg) {
  -             boolean allDomElements = true;
  +             boolean allDOMElements = true;
  +             boolean anyDOMElements = false;
   
           //TODO this should ignore any MIME parts
                if (msg != null) {
  -                     for (Iterator i = msg.getParts(); i.hasNext() && 
allDomElements;) {
  -                             if (!(i.next() instanceof Element)) {
  -                                     allDomElements = false;
  +                     for (Iterator i = msg.getParts(); i.hasNext();) {
  +                Object o = i.next();
  +                             if (o instanceof Element) {
  +                                     anyDOMElements = true;
  +                             } else {
  +                                     allDOMElements = false;
                                }
                        }
                }
  -             return allDomElements;
  +             return anyDOMElements && allDOMElements;
        }
        private boolean doAXISDocStyle(
                Call call,
  @@ -995,7 +995,6 @@
   
                // setup the call object
                call.setOperationName(new QName(getInputNamespace(), 
operation.getName()));
  -             call.setEncodingStyle(null);
                call.setScopedProperty(Call.SEND_TYPE_ATTR, Boolean.FALSE);
                call.setScopedProperty(AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
                call.setOperationStyle(style);
  @@ -1021,6 +1020,7 @@
                Object response;
                try {
                        response = call.invoke(inputValues);
  +                     respOK = true;
                } catch (RemoteException ex) {
                        ex.printStackTrace();
                        throw new WSIFException(
  @@ -1096,17 +1096,14 @@
                Trc.entry(this,call);
   
                // register any WSIFDynamicTypeMappings
  -             if ( "rpc".equals( style ) ) {        
  -             //TODO: fails for "document" as the element types are mapped    
  -                registerTypeMappings(call);
  -             }
  +         registerTypeMappings(call);
   
                // create the arrays for the input parts
                List inputParts = getInputParts();
                this.inputPartNames = getPartNamesArray(inputParts);
                this.inputPartQNs = getPartQNamesArray(inputParts);
                this.inputPartTypeQNs = getPartTypeQNamesArray(inputParts);
  -             this.inputPartTypes = getPartTypesArray(inputParts, call);
  +             this.inputPartTypes = getPartTypesArray(inputParts, call, 
inputEncodingStyle);
                registerMIMETypes(inputPartNames, inputPartTypes, inputPartTypeQNs, 
call);
   
                // create the arrays for the output parts
  @@ -1114,7 +1111,7 @@
                this.outputPartNames = getPartNamesArray(outputParts);
                this.outputPartQNs = getPartQNamesArray(outputParts);
                this.outputPartTypeQNs = getPartTypeQNamesArray(outputParts);
  -             this.outputPartTypes = getPartTypesArray(outputParts, call);
  +             this.outputPartTypes = getPartTypesArray(outputParts, call, 
outputEncodingStyle);
                registerMIMETypes(outputPartNames, outputPartTypes, outputPartTypeQNs, 
call);
   
                // the index in the output part arrays of the return part
  @@ -1356,14 +1353,13 @@
        /**
         * Returns a Class array of the class of each part
         */
  -     private Class[] getPartTypesArray(List parts, Call call)
  +     private Class[] getPartTypesArray(List parts, Call call, String encodingStyle)
                throws WSIFException {
   
                TypeMappingRegistry registry =
                        call.getMessageContext().getTypeMappingRegistry();
                Object o =
  -                     registry.getTypeMapping(
  -                             "http://schemas.xmlsoap.org/soap/encoding/";);
  +                     registry.getTypeMapping( encodingStyle );
                if (!(o instanceof TypeMapping)) {
                        throw new WSIFException("expecting a TypeMapping but found: " 
+ o);
                }
  
  
  


Reply via email to