<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="content-type" content=""/>
  <title></title>
</head>

<body lang="en">
<h1>Code Listing For Axis2SampleDocLitService Service</h1>

<h2>Server:</h2>

<h3>echoString</h3>

<p>Locate the following code segment in "Axis2SampleDocLitServiceSkeleton.java".<br/>
</p>
<source><pre>public org.apache.axis2.userguide.xsd.EchoStringReturnDocument 
        echoString(org.apache.axis2.userguide.xsd.EchoStringParamDocument param4 ){
        //Todo: fill this with the necessary business logic
        throw new  java.lang.UnsupportedOperationException();
   }
</pre></source>

<p>Then complete the code by adding the business logic as shown below:</p>
<source>
<pre>public org.apache.axis2.userguide.xsd.EchoStringReturnDocument 
       echoString(org.apache.axis2.userguide.xsd.EchoStringParamDocument param4) throws Exception {
       //Use the factory to create the output document
       org.apache.axis2.userguide.xsd.EchoStringReturnDocument retDoc = 
           org.apache.axis2.userguide.xsd.EchoStringReturnDocument.Factory.newInstance();
      //send the string back.
      retDoc.setEchoStringReturn(param4.getEchoStringParam());
      return retDoc;
  }</pre>
</source>

<h3>echoStringArray</h3>

<p>The code segment for echoStringArray is shown below:</p>
<source>
<pre>public org.apache.axis2.userguide.xsd.EchoStringArrayReturnDocument 
      echoStringArray(org.apache.axis2.userguide.xsd.EchoStringArrayParamDocument param0) throws Exception {
      //Use the factory to create the output document.
     org.apache.axis2.userguide.xsd.EchoStringArrayReturnDocument retDoc = 
     org.apache.axis2.userguide.xsd.EchoStringArrayReturnDocument.Factory.newInstance();
     //Get the String array from the input parameters.
     String[] inParams = param0.getEchoStringArrayParam().getStringArray();
     org.apache.axis2.userguide.xsd.ArrayOfstringLiteral retParams =
            org.apache.axis2.userguide.xsd.ArrayOfstringLiteral.Factory.newInstance();
     //Set the input parameters to the output parameters for echoing.
     for (int i = 0; i &lt; inParams.length; i++) {
         retParams.addString(inParams[i]);<br/>     }
     //return the output document.
    retDoc.setEchoStringArrayReturn(retParams);
    return retDoc;
   }</pre>
</source>

<h3>echoStruct</h3>

<p>The code segment for echoStruct is shown below:</p>
<source><pre>
  public org.apache.axis2.userguide.xsd.EchoStructReturnDocument 
        echoStruct(org.apache.axis2.userguide.xsd.EchoStructParamDocument param2) throws Exception {
        //Use the factory to create the output document.
        org.apache.axis2.userguide.xsd.EchoStructReturnDocument retDoc =
        org.apache.axis2.userguide.xsd.EchoStructReturnDocument.Factory.newInstance();
        //Get the SOAPStrcut from the incoming parameters
        org.apache.axis2.userguide.xsd.SOAPStruct inStruct = param2.getEchoStructParam();
        //Struct for the sending back
        org.apache.axis2.userguide.xsd.SOAPStruct outStruct =
                org.apache.axis2.userguide.xsd.SOAPStruct.Factory.newInstance();
        //Fill the outgoing struct
        outStruct.setVarFloat(inStruct.getVarFloat());
        outStruct.setVarInt(inStruct.getVarInt());
        outStruct.setVarString(inStruct.getVarString());
        //Set the outgoing document.
        retDoc.setEchoStructReturn(outStruct);
        return retDoc;
    }
</pre></source>

<h2>Client:</h2>

<h3>Client for echoString Operation</h3>

<p>The following code fragment shows the necessary code for utilizing the
echoString operation of the Axis2SampleDocLitService that we have already
deployed. The code is very simple to understand and the explanations are in
the form of comments.</p>
<source><pre>     try {
                      org.apache.axis2.userguide.Axis2SampleDocLitServiceStub stub 
                        = new org.apache.axis2.userguide.Axis2SampleDocLitServiceStub(null,
                           "http://localhost:8080/axis2/services/Axis2SampleDocLitService");
                      //Create the request document to be sent.
                      org.apache.axis2.userguide.xsd.EchoStringParamDocument reqDoc =
                          org.apache.axis2.userguide.xsd.EchoStringParamDocument.Factory.newInstance();
                      reqDoc.setEchoStringParam("Axis2 Echo");
                      //invokes the Web service.
                      org.apache.axis2.userguide.xsd.EchoStringReturnDocument resDoc = 
                                        stub.echoString(reqDoc);
                      System.out.println(resDoc.getEchoStringReturn());
                      } catch (java.rmi.RemoteException e) {
                       e.printStackTrace();
                      }
</pre></source>

<p>Similarly the following code fragments show client side code for
echoStringArray operation and echoStruct operation respectively.</p>

<h3>Client for echoStringArray Operation</h3>
<source><pre>      try {
                       //Create the stub by passing the AXIS_HOME and target EPR.
                       //We pass null to the AXIS_HOME and hence the stub will use the current directory as the AXIS_HOME
                       org.apache.axis2.userguide.Axis2SampleDocLitServiceStub stub = 
                                    new org.apache.axis2.userguide.Axis2SampleDocLitServiceStub(null,
                                    "http://localhost:8080/axis2/services/Axis2SampleDocLitService");
                       //Create the request document to be sent.
                       org.apache.axis2.userguide.xsd.EchoStringArrayParamDocument reqDoc = 
                          org.apache.axis2.userguide.xsd.EchoStringArrayParamDocument.Factory.newInstance();
                      org.apache.axis2.userguide.xsd.ArrayOfstringLiteral paramArray = 
                           org.apache.axis2.userguide.xsd.ArrayOfstringLiteral.Factory.newInstance();
                      paramArray.addString("Axis2");
                      paramArray.addString("Echo");
                      reqDoc.setEchoStringArrayParam(paramArray);
                      org.apache.axis2.userguide.xsd.EchoStringArrayReturnDocument resDoc = 
                      stub.echoStringArray(reqDoc); 
                      //Get the response params
                      String[] resParams = resDoc.getEchoStringArrayReturn().getStringArray();
                      for (int i = 0; i &lt; resParams.length; i++) {
                          System.out.println(resParams[i]);
                      }
                    } catch (java.rmi.RemoteException e) {
                       e.printStackTrace(); 
                    }
               </pre>
    </source>

<h3>Client for echoStruct Operation</h3>
<source><pre>try {
                //Create the stub by passing the AXIS_HOME and target EPR.
                //We pass null to the AXIS_HOME and hence the stub will use the current directory as the AXIS_HOME
                org.apache.axis2.userguide.Axis2SampleDocLitServiceStub stub =
                        new org.apache.axis2.userguide.Axis2SampleDocLitServiceStub(null,
                        "http://localhost:8080/axis2/services/Axis2SampleDocLitService");
                          //Create the request Document
                        org.apache.axis2.userguide.xsd.EchoStructParamDocument reqDoc =
                          org.apache.axis2.userguide.xsd.EchoStructParamDocument.Factory.newInstance();
                         //Create the complex type
                        org.apache.axis2.userguide.xsd.SOAPStruct reqStruct =
                        org.apache.axis2.userguide.xsd.SOAPStruct.Factory.newInstance();
                        reqStruct.setVarFloat(100.50F);
                        reqStruct.setVarInt(10);
                        reqStruct.setVarString("High");
                        reqDoc.setEchoStructParam(reqStruct);
                        //Service invocation
                        org.apache.axis2.userguide.xsd.EchoStructReturnDocument resDoc = 
                         stub.echoStruct(reqDoc);
                       org.apache.axis2.userguide.xsd.SOAPStruct resStruct = 
                          resDoc.getEchoStructReturn();
                       System.out.println("floot Value :" + resStruct.getVarFloat());
                       System.out.println("int Value :" + resStruct.getVarInt());
                       System.out.println("String Value :" + resStruct.getVarString());
                     } catch (java.rmi.RemoteException e) {
                        e.printStackTrace();
                    }
</pre></source>

</body>
</html>
