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 he...@apache.org on 2004/11/28 16:27:18 UTC

svn commit: r106816 - in webservices/axis/trunk/java/dev/scratch/prototype1: . src/java/javax src/java/javax/xml src/java/javax/xml/namespace src/java/org/apache/axis/deployment src/java/org/apache/axis/deployment/deployEvents src/java/org/apache/axis/engine src/java/org/apache/axis/engine/context src/java/org/apache/axis/handlers src/java/org/apache/axis/providers src/java/org/apache/axis/recivers src/java/org/apache/axis/transport src/java/org/apache/axis/transport/http src/samples/msg src/samples/msg/echo src/samples/msg/echo/META-INF src/schema src/test-resources/echo src/test-resources/soap src/test/org/apache/axis/engine src/test/org/apache/axis/engine/registry src/test/org/apache/axis/om src/test/org/apache/axis/om/soap

Author: hemapani
Date: Sun Nov 28 07:27:17 2004
New Revision: 106816

URL: http://svn.apache.org/viewcvs?view=rev&rev=106816
Log:
1) add recivers,providers get the engine to decided point 
2) remove saaj and jaxrpc jars and add javax...QName
3) add test cases to OM
4) add a sample and fix the maven build to create a jar out of it in the build
Added:
   webservices/axis/trunk/java/dev/scratch/prototype1/maven.xml
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/javax/
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/javax/xml/
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/javax/xml/namespace/
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/javax/xml/namespace/QName.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Reciver.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/ReciverLocator.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/ServiceLocator.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/TransportSender.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/TransportSenderLocator.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/handlers/OpNameFinder.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/RawXMLProvider.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/recivers/
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/recivers/INReciver.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/recivers/InOutAsyncReciver.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/recivers/InOutSyncReciver.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/TCPTrasnportSender.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/
   webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/
   webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/Echo.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/Handler1.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/META-INF/
   webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/META-INF/service.xml
   webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/build.xml
   webservices/axis/trunk/java/dev/scratch/prototype1/src/schema/wsdd.xsd
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/echo/
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/emtyBodymessage.xml
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/minimalMessage.xml
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/reallyReallyBigMessage.xml
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/sample1.txt
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/sample1.xml
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/soapmessage.txt
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/soapmessage.xml
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/whitespacedMessage.xml
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingHandler1.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTestUtils.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/soap/MessagesTest.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/soap/SOAPEnvelopeAnotherTest.java
Removed:
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/handlers/DocLitOpNameFinder.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/handlers/RPCOpNameFinder.java
Modified:
   webservices/axis/trunk/java/dev/scratch/prototype1/project.xml
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/deployment/DeploymentEngine.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/deployment/deployEvents/RepositaryListenerImpl.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/AxisEngine.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Provider.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Sender.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Service.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/SimpleService.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/context/MessageContext.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/AbstractProvider.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/SimpleJavaProvider.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/TransportSender.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/HTTPConstants.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/SimpleAxisWorker.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/EchoTest.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/EngineTest.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/Utils.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/MockFlow.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingHandler.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingProvider.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTest.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTestCase.java
   webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/soap/SOAPEnvelopeTest.java

Added: webservices/axis/trunk/java/dev/scratch/prototype1/maven.xml
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/maven.xml?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/maven.xml	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- $Revision: 1.21 $ $Date: 2004-10-27 20:54:09 +0600 (Wed, 27 Oct 2004) $ -->
+
+<project default="jar"
+    xmlns:j="jelly:core"
+    xmlns:maven="jelly:maven"
+    xmlns:deploy="deploy"
+    xmlns:ant="jelly:ant">
+    <preGoal name="test:test">
+        <j:jelly xmlns="jelly:ant">
+			<ant:ant antfile="build.xml" inheritall="true" inheritrefs="true" dir="src/samples/msg/echo"/>
+        </j:jelly>
+    </preGoal> 
+</project>

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/project.xml
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/project.xml?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/project.xml&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/project.xml&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/project.xml	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/project.xml	Sun Nov 28 07:27:17 2004
@@ -74,6 +74,12 @@
     <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
 
     <unitTest>
+    
+      <excludes>
+        <exclude>**/*Abstract*.java</exclude>
+	    <exclude>**/*Util*.java</exclude>
+        <exclude>**/*SOAPEnvelopeAnotherTest.java</exclude>
+      </excludes>
       <includes>
         <include>**/*Test.java</include>
       </includes>
@@ -118,22 +124,6 @@
         <dependency>
             <groupId>axis</groupId>
             <artifactId>commons-logging</artifactId>
-            <version>SNAPSHOT</version>
-            <properties>
-                <module>true</module>
-            </properties>
-        </dependency>
-        <dependency>
-            <groupId>axis</groupId>
-            <artifactId>jaxrpc</artifactId>
-            <version>SNAPSHOT</version>
-            <properties>
-                <module>true</module>
-            </properties>
-        </dependency>
-        <dependency>
-            <groupId>axis</groupId>
-            <artifactId>saaj</artifactId>
             <version>SNAPSHOT</version>
             <properties>
                 <module>true</module>

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/javax/xml/namespace/QName.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/javax/xml/namespace/QName.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/javax/xml/namespace/QName.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,229 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+package javax.xml.namespace;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
+
+/**
+ * <code>QName</code> class represents the value of a qualified name
+ * as specified in <a href="http://www.w3.org/TR/xmlschema-2/#QName">XML
+ * Schema Part2: Datatypes specification</a>.
+ * <p>
+ * The value of a QName contains a <b>namespaceURI</b>, a <b>localPart</b> and a
+ * <b>prefix</b>. The localPart provides the local part of the qualified name.
+ * The namespaceURI is a URI reference identifying the namespace.
+ *
+ * @version 1.1
+ */
+public class QName implements Serializable {
+
+    /** Comment/shared empty <code>String</code>. */
+    private static final String emptyString = "".intern();
+
+    private String namespaceURI;
+
+    private String localPart;
+
+    private String prefix;
+
+    /**
+     * Constructor for the QName.
+     *
+     * @param localPart local part of the QName
+     */
+    public QName(String localPart) {
+        this(emptyString, localPart, emptyString);
+    }
+
+    /**
+     * Constructor for the QName.
+     *
+     * @param namespaceURI namespace URI for the QName
+     * @param localPart local part of the QName.
+     */
+    public QName(String namespaceURI, String localPart) {
+        this(namespaceURI, localPart, emptyString);
+    }
+
+    /**
+     * Constructor for the QName.
+     *
+     * @param namespaceURI Namespace URI for the QName
+     * @param localPart Local part of the QName.
+     * @param prefix Prefix of the QName.
+     */
+    public QName(String namespaceURI, String localPart, String prefix) {
+        this.namespaceURI = (namespaceURI == null)
+                ? emptyString
+                : namespaceURI.intern();
+        if (localPart == null) {
+            throw new IllegalArgumentException("invalid QName local part");
+        } else {
+            this.localPart = localPart.intern();
+        }
+
+        if (prefix == null) {
+            throw new IllegalArgumentException("invalid QName prefix");
+        } else {
+            this.prefix = prefix.intern();
+        }
+    }
+
+    /**
+     * Gets the namespace URI for this QName.
+     *
+     * @return namespace URI
+     */
+    public String getNamespaceURI() {
+        return namespaceURI;
+    }
+
+    /**
+     * Gets the local part for this QName.
+     *
+     * @return the local part
+     */
+    public String getLocalPart() {
+        return localPart;
+    }
+
+    /**
+     * Gets the prefix for this QName.
+     *
+     * @return the prefix
+     */
+    public String getPrefix() {
+        return prefix;
+    }
+
+    /**
+     * Returns a string representation of this QName.
+     *
+     * @return  a string representation of the QName
+     */
+    public String toString() {
+
+        return ((namespaceURI == emptyString)
+                ? localPart
+                : '{' + namespaceURI + '}' + localPart);
+    }
+
+    /**
+     * Tests this QName for equality with another object.
+     * <p>
+     * If the given object is not a QName or is null then this method
+     * returns <tt>false</tt>.
+     * <p>
+     * For two QNames to be considered equal requires that both
+     * localPart and namespaceURI must be equal. This method uses
+     * <code>String.equals</code> to check equality of localPart
+     * and namespaceURI. Any class that extends QName is required
+     * to satisfy this equality contract.
+     * <p>
+     * This method satisfies the general contract of the <code>Object.equals</code> method.
+     *
+     * @param obj the reference object with which to compare
+     *
+     * @return <code>true</code> if the given object is identical to this
+     *      QName: <code>false</code> otherwise.
+     */
+    public boolean equals(Object obj) {
+
+        if (obj == this) {
+            return true;
+        }
+
+        if (!(obj instanceof QName)) {
+            return false;
+        }
+
+        if ((namespaceURI == ((QName) obj).namespaceURI)
+                && (localPart == ((QName) obj).localPart)) {
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Returns a QName holding the value of the specified String.
+     * <p>
+     * The string must be in the form returned by the QName.toString()
+     * method, i.e. "{namespaceURI}localPart", with the "{namespaceURI}"
+     * part being optional.
+     * <p>
+     * This method doesn't do a full validation of the resulting QName.
+     * In particular, it doesn't check that the resulting namespace URI
+     * is a legal URI (per RFC 2396 and RFC 2732), nor that the resulting
+     * local part is a legal NCName per the XML Namespaces specification.
+     *
+     * @param s the string to be parsed
+     * @throws java.lang.IllegalArgumentException If the specified String cannot be parsed as a QName
+     * @return QName corresponding to the given String
+     */
+    public static QName valueOf(String s) {
+
+        if ((s == null) || s.equals("")) {
+            throw new IllegalArgumentException("invalid QName literal");
+        }
+
+        if (s.charAt(0) == '{') {
+            int i = s.indexOf('}');
+
+            if (i == -1) {
+                throw new IllegalArgumentException("invalid QName literal");
+            }
+
+            if (i == s.length() - 1) {
+                throw new IllegalArgumentException("invalid QName literal");
+            } else {
+                return new QName(s.substring(1, i), s.substring(i + 1));
+            }
+        } else {
+            return new QName(s);
+        }
+    }
+
+    /**
+     * Returns a hash code value for this QName object. The hash code
+     * is based on both the localPart and namespaceURI parts of the
+     * QName. This method satisfies the  general contract of the
+     * <code>Object.hashCode</code> method.
+     *
+     * @return a hash code value for this Qname object
+     */
+    public int hashCode() {
+        return namespaceURI.hashCode() ^ localPart.hashCode();
+    }
+
+    /**
+     * Ensure that deserialization properly interns the results.
+     * @param in the ObjectInputStream to be read
+     * @throws IOException  if there was a failure in the object input stream
+     * @throws ClassNotFoundException   if the class of any sub-objects could
+     *              not be found
+     */
+    private void readObject(ObjectInputStream in) throws
+            IOException, ClassNotFoundException {
+        in.defaultReadObject();
+
+        namespaceURI = namespaceURI.intern();
+        localPart = localPart.intern();
+        prefix = prefix.intern();
+    }
+}

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/deployment/DeploymentEngine.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/deployment/DeploymentEngine.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/deployment/DeploymentEngine.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/deployment/DeploymentEngine.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/deployment/DeploymentEngine.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/deployment/DeploymentEngine.java	Sun Nov 28 07:27:17 2004
@@ -226,7 +226,7 @@
          * ****************************************************************************
          * setting  service provider
          */
-        service.setProvider(new SyncProvider(new SimpleJavaProvider()));
+        service.setProvider(new SimpleJavaProvider());
 
         //todo Module should come inside operation not service (Srinath fix that :) )
 

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/deployment/deployEvents/RepositaryListenerImpl.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/deployment/deployEvents/RepositaryListenerImpl.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/deployment/deployEvents/RepositaryListenerImpl.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/deployment/deployEvents/RepositaryListenerImpl.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/deployment/deployEvents/RepositaryListenerImpl.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/deployment/deployEvents/RepositaryListenerImpl.java	Sun Nov 28 07:27:17 2004
@@ -99,15 +99,17 @@
             File dir = (File) current_jars.elementAt(0); // get first dir
             current_jars.remove(0);       // remove it
             files = dir.list();              // get list of files
-
-            for (int i = 0; i < files.length; i++) { // iterate
-                File f = new File(dir, files[i]);
-                if (f.isDirectory()) {        // see if it's a directory
-                    current_jars.insertElementAt(f, 0);
-                } // add dir to start of agenda
-                else if (isJarFile(f.getName())) {
-                    wsinfoList.addWSInfoItem(f, type);
+            if(files != null){
+                for (int i = 0; i < files.length; i++) { // iterate
+                    File f = new File(dir, files[i]);
+                    if (f.isDirectory()) {        // see if it's a directory
+                        current_jars.insertElementAt(f, 0);
+                    } // add dir to start of agenda
+                    else if (isJarFile(f.getName())) {
+                        wsinfoList.addWSInfoItem(f, type);
+                    }
                 }
+            
             }
         }
     }

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/AxisEngine.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/AxisEngine.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/AxisEngine.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/AxisEngine.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/AxisEngine.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/AxisEngine.java	Sun Nov 28 07:27:17 2004
@@ -16,11 +16,13 @@
 
 package org.apache.axis.engine;
 
+import javax.naming.OperationNotSupportedException;
 import javax.xml.namespace.QName;
 
 import org.apache.axis.engine.context.MessageContext;
 import org.apache.axis.engine.exec.ExecutionChain;
 import org.apache.axis.engine.registry.EngineRegistry;
+import org.apache.axis.handlers.OpNameFinder;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -42,11 +44,12 @@
         QName currentServiceName = null;
         Service service = null;
         //dispatch the service Name
-        currentServiceName = mc.getCurrentService();
-        service = registry.getService(currentServiceName);
+        service = mc.getService();
         try{
             ExecutionChain exeChain = service.getOutputExecutionChain();
             exeChain.invoke(mc);
+            TransportSender ts = TransportSenderLocator.locateTransPortSender(mc);
+            ts.invoke(mc);
         }catch(AxisFault e){
             if(mc.isProcessingFault()){
                 //TODO log and exit
@@ -63,14 +66,17 @@
     
     public void recive(MessageContext mc)throws AxisFault{
         QName currentServiceName = null;
-        Service service = null;
-
-        currentServiceName = mc.getCurrentService();
-        service = registry.getService(currentServiceName);
+        Service service = mc.getService();
 
         try{
             ExecutionChain exeChain = service.getInputExecutionChain();
             exeChain.invoke(mc);
+            if(mc.isServerSide()){
+                OpNameFinder finder = new OpNameFinder();
+                finder.invoke(mc);
+                Reciver reciver = ReciverLocator.locateReciver(mc);
+                reciver.invoke(mc);
+            }
         }catch(AxisFault e){
             if(mc.isProcessingFault()){
                 //TODO log and exit
@@ -81,6 +87,7 @@
                 ExecutionChain faultExeChain = service.getFaultExecutionChain();
                 faultExeChain.invoke(mc);
             }
+            e.printStackTrace();
         }
         log.info("end the recive()");
     }    

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Provider.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Provider.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Provider.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Provider.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Provider.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Provider.java	Sun Nov 28 07:27:17 2004
@@ -15,11 +15,17 @@
  */
 package org.apache.axis.engine;
 
+import java.io.Serializable;
+
+import org.apache.axis.engine.context.MessageContext;
+import org.apache.axis.engine.registry.NamedEngineElement;
+
 
 /**
  * This Provider is the workhorse who locate the implementation of the Web Service and 
  * invoke the Web Service. 
  * @author Srinath Perera(hemapani@opensource.lk)
  */
-public interface Provider extends Handler{
+public interface Provider extends Serializable,NamedEngineElement{
+    public MessageContext invoke(MessageContext msgCtx)throws AxisFault;
 }    

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Reciver.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Reciver.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Reciver.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+
+package org.apache.axis.engine;
+
+
+/**
+ * @author Srinath Perera(hemapani@opensource.lk)
+ */
+public interface Reciver extends Handler{
+}

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/ReciverLocator.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/ReciverLocator.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/ReciverLocator.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+
+package org.apache.axis.engine;
+
+import org.apache.axis.engine.context.MessageContext;
+import org.apache.axis.recivers.InOutSyncReciver;
+
+/**
+ * @author Srinath Perera(hemapani@opensource.lk)
+ */
+public class ReciverLocator {
+    public static Reciver locateReciver(MessageContext msgCtx)throws AxisFault{
+        
+        //File wsdlFile = msgCtx.getService().getParameter("wsdlFile");
+        //parse the WSDL find the patterns 
+        //create a reciver
+        return new InOutSyncReciver();
+    }
+}

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Sender.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Sender.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Sender.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Sender.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Sender.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Sender.java	Sun Nov 28 07:27:17 2004
@@ -17,9 +17,7 @@
 
 import org.apache.axis.engine.context.MessageContext;
 
-/**
- * @author Srinath Perera (hemapani@opensource.lk)
- */
+
 public class Sender {
     public void send(MessageContext msgCtx) throws AxisFault{
         AxisEngine engine = new AxisEngine(msgCtx.getGlobalContext().getRegistry());

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Service.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Service.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Service.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Service.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Service.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/Service.java	Sun Nov 28 07:27:17 2004
@@ -32,9 +32,9 @@
     TypeMappingInclude,ModuleInclude{
     public Operation getOperation(QName index);
     public void addOperation(Operation op);
-    public Handler getProvider();
+    public Provider getProvider();
     public Handler getSender();
-    public void setProvider(Handler handler);    
+    public void setProvider(Provider handler);    
     public ClassLoader getClassLoader();
     public void setClassLoader(ClassLoader cl); 
     /**

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/ServiceLocator.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/ServiceLocator.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/ServiceLocator.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+
+package org.apache.axis.engine;
+
+import javax.print.attribute.standard.Severity;
+import javax.xml.namespace.QName;
+
+import org.apache.axis.engine.context.MessageContext;
+
+/**
+ * @author Srinath Perera(hemapani@opensource.lk)
+ */
+public class ServiceLocator {
+    public static Service locateService(String uri,String soapAction,MessageContext msgctx) throws AxisFault{
+        QName serviceName = null;
+        if(uri != null){
+            int index = uri.indexOf('?');
+            if(index > -1){
+                //TODO get the opeartion name from URI as well 
+                serviceName = new QName(uri);
+            }else{
+                serviceName = new QName(uri);
+            }
+        }else{
+            if(soapAction != null){
+                serviceName = new QName(uri);
+            }
+        }
+        if(serviceName != null){
+            Service service = msgctx.getGlobalContext().getRegistry().getService(serviceName);
+            if(service != null){
+                return service;
+            }else{
+                throw new AxisFault("Service Not found");
+            }
+        }else{
+            throw new AxisFault("Both the URI and SOAP_ACTION Is Null");
+        }
+    }
+}

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/SimpleService.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/SimpleService.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/SimpleService.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/SimpleService.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/SimpleService.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/SimpleService.java	Sun Nov 28 07:27:17 2004
@@ -54,7 +54,7 @@
     private Log log = LogFactory.getLog(getClass());     
     private HashMap operations = new HashMap();
     private QName name;
-    private Handler provider;
+    private Provider provider;
     private Handler sender;    
     private ClassLoader classLoader;
     
@@ -82,11 +82,11 @@
         operations.put(op.getName(),op);
     }
 
-    public Handler getProvider() {
+    public Provider getProvider() {
         return provider;
     }
 
-    public void setProvider(Handler provider) {
+    public void setProvider(Provider provider) {
         this.provider = provider;
 
     }

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/TransportSender.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/TransportSender.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/TransportSender.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+
+package org.apache.axis.engine;
+
+/**
+ * @author Srinath Perera(hemapani@opensource.lk)
+ */
+public interface TransportSender extends Handler {
+}

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/TransportSenderLocator.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/TransportSenderLocator.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/TransportSenderLocator.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+
+package org.apache.axis.engine;
+
+import org.apache.axis.engine.context.MessageContext;
+import org.apache.axis.transport.http.TCPTrasnportSender;
+
+
+/**
+ * @author Srinath Perera(hemapani@opensource.lk)
+ */
+public class TransportSenderLocator {
+    public static final String TRANSPORT_TCP = "TRANSPORT_TCP";
+    
+    public static TransportSender locateTransPortSender(MessageContext msgContext){
+        String type= (String)msgContext.getProperty(MessageContext.TRANSPORT_TYPE);
+                               
+        if( TransportSenderLocator.TRANSPORT_TCP.equals(type)){
+            return new TCPTrasnportSender();
+        }
+        return null;
+    }
+}

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/context/MessageContext.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/context/MessageContext.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/context/MessageContext.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/context/MessageContext.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/context/MessageContext.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/engine/context/MessageContext.java	Sun Nov 28 07:27:17 2004
@@ -20,10 +20,14 @@
 
 import javax.xml.namespace.QName;
 
+import org.apache.axis.engine.AxisFault;
 import org.apache.axis.engine.Constants;
+import org.apache.axis.engine.Operation;
+import org.apache.axis.engine.Service;
+import org.apache.axis.engine.addressing.EndPointReferance;
 import org.apache.axis.engine.registry.EngineRegistry;
 import org.apache.axis.om.soap.SOAPMessage;
-import org.apache.axis.transport.TransportSender;
+
 /**
  *  The palce where all the service specific states are kept. 
  *  All the Global states kept in the <code>EngineRegistry</code> and all the 
@@ -32,130 +36,126 @@
  */
 public class MessageContext {
     private int messageStyle = Constants.SOAP_STYLE_RPC_ENCODED;
-    private HashMap messages = new HashMap();
-	public static String USER_NAME = "USER";
-	public static String PASSWARD = "PASSWD";
-	
-	
-    public MessageContext(EngineRegistry er){
-        globalContext = new GlobalContext(er);
-        sessionContext = new SimpleSessionContext();
-    }
+//    private HashMap messages = new HashMap();
+    
+	public static final String USER_NAME = "USER";
+	public static final String PASSWARD = "PASSWD";
+	public static final String TRANSPORT_TYPE = "TRANSPORT_TYPE";
+    public static final String SOAP_ACTION = "SOAP_ACTION";
+    public static final String TRANSPORT_DATA = "TRANSPORT_DATA";
     
     private boolean processingFault = false;
-    private QName currentTansport = null; 
-    private QName currentService = null;
-    private QName currentOperation = null;
-    private HashMap properties = new HashMap();
-    private boolean useSOAPAction = true;
-    private String soapAction = "";   
-    private SOAPMessage inMessage;
-    private SOAPMessage outMessage;
-    private TransportSender transportSender;
+    private EndPointReferance to;
+    private EndPointReferance from;
+    private EndPointReferance relatesTo;
+    private EndPointReferance replyTo;
+    private EndPointReferance faultTo;
+
+    //there is a no use cas found to set those proprties 
+    //so declare them final    
+    private final HashMap properties;
+    private final GlobalContext globalContext;
+
+    private SessionContext sessionContext;
+    private Service service;
+    private SOAPMessage message; 
+    private boolean responseWritten;
+    private boolean infaultFlow;
+    private boolean serverSide;
+    private String messageID;
+    private Operation operation;
+    private boolean newThreadRequired = false;
+    
+    public MessageContext(EngineRegistry er) throws AxisFault{
+        this.globalContext = new GlobalContext(er);
+        this.sessionContext = new SimpleSessionContext();
+        properties = new HashMap();
+    }
+
     
     /**
-     * @return Returns the transportSender.
+     * @return
      */
-    public TransportSender getTransportSender() {
-        return transportSender;
+    public EndPointReferance getFaultTo() {
+        return faultTo;
     }
+
     /**
-     * @param transportSender The transportSender to set.
+     * @return
      */
-    public void setTransportSender(TransportSender transportSender) {
-        this.transportSender = transportSender;
-    }
-	/**
-	 * @return Returns the soapAction.
-	 */
-	public String getSoapAction() {
-		return soapAction;
-	}
-	/**
-	 * @param soapAction The soapAction to set.
-	 */
-	public void setSoapAction(String soapAction) {
-		this.soapAction = soapAction;
-	}
-	/**
-	 * @return Returns the useSOAPAction.
-	 */
-	public boolean isUseSOAPAction() {
-		return useSOAPAction;
-	}
-	/**
-	 * @param useSOAPAction The useSOAPAction to set.
-	 */
-	public void setUseSOAPAction(boolean useSOAPAction) {
-		this.useSOAPAction = useSOAPAction;
-	}
-    private SessionContext sessionContext;
-    private GlobalContext globalContext;
-    
-    
-    public boolean isProcessingFault(){
-        return processingFault;
-    }
-    public void setProcessingFault(boolean processingFault){
-        this.processingFault = processingFault;
+    public EndPointReferance getFrom() {
+        return from;
     }
-    
-    public void setProperty(String key,String value){
-    	properties.put(key,value);
+
+    /**
+     * @return
+     */
+    public GlobalContext getGlobalContext() {
+        return globalContext;
     }
-    
-    public String getProperty(String key){
-    	return (String)properties.get(key);
+
+    /**
+     * @return
+     */
+    public boolean isInfaultFlow() {
+        return infaultFlow;
     }
+
     /**
      * @return
      */
-    public QName getCurrentTansport() {
-        return currentTansport;
+    public SOAPMessage getMessage() {
+        return message;
     }
 
-   
     /**
-     * @param name
+     * @return
      */
-    public void setCurrentTansport(QName name) {
-        currentTansport = name;
+    public String getMessageID() {
+        return messageID;
     }
 
+
     /**
      * @return
      */
-    public QName getCurrentOperation() {
-        return currentOperation;
+    public boolean isProcessingFault() {
+        return processingFault;
     }
 
+    /**
+     * @return
+     */
+    public Object getProperty(Object key) {
+        return properties.get(key);
+    }
 
     /**
-     * @param name
+     * @return
      */
-    public void setCurrentOperation(QName name) {
-        currentOperation = name;
+    public EndPointReferance getRelatesTo() {
+        return relatesTo;
     }
 
     /**
-     * @param name
+     * @return
      */
-    public void setCurrentService(QName name) {
-        currentService = name;
+    public EndPointReferance getReplyTo() {
+        return replyTo;
     }
 
     /**
      * @return
      */
-    public QName getCurrentService() {
-        return currentService;
+    public boolean isResponseWritten() {
+        return responseWritten;
     }
 
     /**
      * @return
      */
-    public GlobalContext getGlobalContext() {
-        return globalContext;
+    public boolean isServerSide() {
+        return serverSide;
     }
 
     /**
@@ -166,10 +166,139 @@
     }
 
     /**
-     * @param context
+     * @return
+     */
+    public EndPointReferance getTo() {
+        return to;
+    }
+
+    /**
+     * @param referance
+     */
+    public void setFaultTo(EndPointReferance referance) {
+        faultTo = referance;
+    }
+
+    /**
+     * @param referance
+     */
+    public void setFrom(EndPointReferance referance) {
+        from = referance;
+    }
+
+    /**
+     * @param b
+     */
+    public void setInfaultFlow(boolean b) {
+        infaultFlow = b;
+    }
+
+    /**
+     * @param message
+     */
+    public void setMessage(SOAPMessage message) {
+        this.message = message;
+    }
+
+    /**
+     * @param string
      */
-    public void setGlobalContext(GlobalContext context) {
-        globalContext = context;
+    public void setMessageID(String string) {
+        messageID = string;
+    }
+
+
+    /**
+     * @param b
+     */
+    public void setProcessingFault(boolean b) {
+        processingFault = b;
+    }
+
+    /**
+     * @param map
+     */
+    public void setProperty(Object key,Object value) {
+        properties.put(key,value);
+    }
+
+    /**
+     * @param referance
+     */
+    public void setRelatesTo(EndPointReferance referance) {
+        relatesTo = referance;
+    }
+
+    /**
+     * @param referance
+     */
+    public void setReplyTo(EndPointReferance referance) {
+        replyTo = referance;
+    }
+
+    /**
+     * @param b
+     */
+    public void setResponseWritten(boolean b) {
+        responseWritten = b;
+    }
+
+    /**
+     * @param b
+     */
+    public void setServerSide(boolean b) {
+        serverSide = b;
+    }
+
+
+    /**
+     * @param referance
+     */
+    public void setTo(EndPointReferance referance) {
+        to = referance;
+    }
+
+    /**
+     * @return
+     */
+    public Service getService() {
+        return service;
+    }
+
+
+    /**
+     * @return
+     */
+    public Operation getOperation() {
+        return operation;
+    }
+
+    /**
+     * @param operation
+     */
+    public void setOperation(Operation operation) {
+        this.operation = operation;
+    }
+
+    /**
+     * @return
+     */
+    public boolean isNewThreadRequired() {
+        return newThreadRequired;
+    }
+
+    /**
+     * @param b
+     */
+    public void setNewThreadRequired(boolean b) {
+        newThreadRequired = b;
+    }
+
+    /**
+     * @param service
+     */
+    public void setService(Service service) {
+        this.service = service;
     }
 
     /**
@@ -179,44 +308,18 @@
         sessionContext = context;
     }
 
-	/**
-	 * @return Returns the inMessage.
-	 */
-	public SOAPMessage getInMessage() {
-		return inMessage;
-	}
-	/**
-	 * @param inMessage The inMessage to set.
-	 */
-	public void setInMessage(SOAPMessage inMessage) {
-		this.inMessage = inMessage;
-	}
-	/**
-	 * @return Returns the outMessage.
-	 */
-	public SOAPMessage getOutMessage() {
-		return outMessage;
-	}
-	/**
-	 * @param outMessage The outMessage to set.
-	 */
-	public void setOutMessage(SOAPMessage outMessage) {
-		this.outMessage = outMessage;
-	}
     /**
-     * @return Returns the messageStyle.
+     * @return
      */
     public int getMessageStyle() {
         return messageStyle;
     }
+
     /**
-     * @param messageStyle The messageStyle to set.
+     * @param i
      */
-    public void setMessageStyle(int messageStyle) {
-        this.messageStyle = messageStyle;
+    public void setMessageStyle(int i) {
+        messageStyle = i;
     }
-    
-   public void addRelatedMessageContext(String key,MessageContext msgctx){
-       messages.put(key,msgctx);
-   }
+
 }

Deleted: /webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/handlers/DocLitOpNameFinder.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/handlers/DocLitOpNameFinder.java?view=auto&rev=106815
==============================================================================

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/handlers/OpNameFinder.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/handlers/OpNameFinder.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/handlers/OpNameFinder.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2003,2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+package org.apache.axis.handlers;
+
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis.engine.AxisFault;
+import org.apache.axis.engine.Constants;
+import org.apache.axis.engine.Service;
+import org.apache.axis.engine.context.MessageContext;
+import org.apache.axis.om.OMElement;
+import org.apache.axis.om.OMNamespace;
+import org.apache.axis.om.OMNode;
+import org.apache.axis.om.soap.SOAPMessage;
+
+/**
+ * @author Srinath Perera (hemapani@opensource.lk)
+ */
+public class OpNameFinder extends AbstractHandler{
+    public void invoke(MessageContext msgContext) throws AxisFault {
+        int style = msgContext.getMessageStyle();
+        if(Constants.SOAP_STYLE_RPC_ENCODED == style || style == Constants.SOAP_STYLE_RPC_LITERAL){
+            SOAPMessage message = msgContext.getMessage();
+            OMNode node = null;
+            OMElement element = message.getEnvelope().getBody();
+            if(Constants.ELEM_BODY.equals(element.getLocalName())){
+                Iterator bodychilderen = element.getChildren();
+                while(bodychilderen.hasNext()){
+                    node = (OMNode)bodychilderen.next();
+                    
+                    //TODO
+                    if(node == null){
+                        System.out.println("Why the some nodes are null :( :( :(");
+                        continue; 
+                    }
+                    
+                    if(node.getType() == OMNode.ELEMENT_NODE){
+                        OMElement bodyChild  = (OMElement)node;
+                    
+                        OMNamespace omns = bodyChild.getNamespace();
+    
+                        if(omns != null){
+                            String ns = omns.getValue();
+                            if(ns != null){
+                                QName opName = new QName(ns,bodyChild.getLocalName());
+                                Service service = msgContext.getService();
+                                msgContext.setOperation(service.getOperation(opName)); 
+                            }
+                        }else{
+                            throw new AxisFault("SOAP Body must be NS Qualified");                            
+                        }
+                
+                    }    
+                }
+            }
+        }
+    }
+}

Deleted: /webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/handlers/RPCOpNameFinder.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/handlers/RPCOpNameFinder.java?view=auto&rev=106815
==============================================================================

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/AbstractProvider.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/AbstractProvider.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/AbstractProvider.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/AbstractProvider.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/AbstractProvider.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/AbstractProvider.java	Sun Nov 28 07:27:17 2004
@@ -15,14 +15,9 @@
  */
 package org.apache.axis.providers;
 
-import java.lang.reflect.Method;
-
 import javax.xml.namespace.QName;
 
-import org.apache.axis.engine.AxisFault;
-import org.apache.axis.engine.Handler;
 import org.apache.axis.engine.Provider;
-import org.apache.axis.engine.context.MessageContext;
 import org.apache.axis.engine.registry.AbstractEngineElement;
 
 /**
@@ -30,18 +25,9 @@
  * protected abstract methods are only for the sake of braking down the logic
  * @author Srinath Perera(hemapani@opensource.lk)
  */
-public abstract class AbstractProvider extends AbstractEngineElement implements Handler, Provider{
+public abstract class AbstractProvider extends AbstractEngineElement implements Provider{
     private QName name;
     private String scope;
-    
-    protected abstract Object makeNewServiceObject(MessageContext msgContext)throws AxisFault;
-
-    public abstract Object getTheImplementationObject(
-            MessageContext msgContext)throws AxisFault;
-    
-    public abstract Object[] deserializeParameters(MessageContext msgContext,Method method)throws AxisFault;
-
-
     public QName getName() {
         return name;
     }

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/RawXMLProvider.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/RawXMLProvider.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/RawXMLProvider.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+
+package org.apache.axis.providers;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis.engine.AxisFault;
+import org.apache.axis.engine.Constants;
+import org.apache.axis.engine.Provider;
+import org.apache.axis.engine.Service;
+import org.apache.axis.engine.context.MessageContext;
+import org.apache.axis.engine.context.SessionContext;
+import org.apache.axis.engine.registry.Parameter;
+import org.apache.axis.om.OMElement;
+import org.apache.axis.om.soap.SOAPBody;
+import org.apache.axis.om.soap.SOAPEnvelope;
+import org.apache.axis.om.soap.SOAPMessage;
+
+/**
+ * This is a Simple java Provider. 
+ * @author Srinath Perera(hemapani@opensource.lk)
+ */
+
+public class RawXMLProvider extends AbstractProvider implements Provider {
+    private String message;
+    private QName name;
+    private String scope;
+    private Method method;
+    private ClassLoader classLoader;
+    
+    public RawXMLProvider(){
+        scope = Constants.APPLICATION_SCOPE;
+
+    }
+    
+    protected Object makeNewServiceObject(MessageContext msgContext)
+        throws AxisFault
+    {
+        try {
+            Service service = msgContext.getService();
+            classLoader = service.getClassLoader();
+            Parameter classParm = service.getParameter("className");
+            String className = (String)classParm.getValue();
+            if(className == null)
+                throw new AxisFault("className parameter is null");
+            if(classLoader == null){
+                classLoader = Thread.currentThread().getContextClassLoader();
+            }
+            Class implClass =Class.forName(className,true,classLoader);
+            return implClass.newInstance();
+        } catch (Exception e) {
+            throw AxisFault.makeFault(e);
+        }
+    }
+
+    public Object getTheImplementationObject(
+            MessageContext msgContext)throws AxisFault{
+            Service service = msgContext.getService();
+            QName serviceName = service.getName();
+        if(Constants.APPLICATION_SCOPE.equals(scope)){
+            return makeNewServiceObject(msgContext);
+        }else if(Constants.SESSION_SCOPE.equals(scope)){
+            SessionContext sessionContext = msgContext.getSessionContext();
+            Object obj = sessionContext.get(serviceName);
+            if(obj == null){
+                obj = makeNewServiceObject(msgContext);
+                sessionContext.put(serviceName,obj);
+            }
+            return obj;            
+        }else if(Constants.GLOBAL_SCOPE.equals(scope)){
+            SessionContext globalContext = msgContext.getSessionContext();
+            Object obj = globalContext.get(serviceName);
+            if(obj == null){
+                obj = makeNewServiceObject(msgContext);
+                globalContext.put(serviceName,obj);
+            }
+            return obj;
+        }else{
+            throw new AxisFault("unknown scope "+ scope);
+        }
+            
+    } 
+    
+
+
+    public QName getName() {
+        return name;
+    }
+
+    public MessageContext invoke(MessageContext msgContext) throws AxisFault {
+        try {
+            //get the implementation class for the Web Service 
+            Object obj = getTheImplementationObject(msgContext);
+            
+            //find the WebService method  
+            Class ImplClass =obj.getClass();
+            String methodName = msgContext.getOperation().getName().getLocalPart();
+            Method[] methods = ImplClass.getMethods();
+            for(int i = 0;i<methods.length;i++){
+                if(methods[i].getName().equals(methodName)){
+                    this.method = methods[i];
+                    break;
+                }
+            }
+
+            Object[] parms = new Object[]{msgContext.getMessage()};
+            //invoke the WebService 
+            SOAPMessage result = (SOAPMessage)method.invoke(obj,parms);
+            MessageContext msgContext1 = new MessageContext(msgContext.getGlobalContext().getRegistry());
+            msgContext1.setMessage(result);
+            
+            return msgContext1;
+        }  catch (SecurityException e) {
+            throw AxisFault.makeFault(e);
+        } catch (IllegalArgumentException e) {
+            throw AxisFault.makeFault(e);
+        } catch (IllegalAccessException e) {
+            throw AxisFault.makeFault(e);
+        } catch (InvocationTargetException e) {
+            throw AxisFault.makeFault(e);
+        } catch (Exception e) {
+            throw AxisFault.makeFault(e);
+        }
+    }
+
+    public void revoke(MessageContext msgContext) {
+        System.out.println("I am Speaking Provider revoking :)");
+    }
+
+    public void setName(QName name) {
+        this.name = name;
+    }
+
+    /**
+     * @return
+     */
+    public ClassLoader getClassLoader() {
+        return classLoader;
+    }
+
+    /**
+     * @param loader
+     */
+    public void setClassLoader(ClassLoader loader) {
+        classLoader = loader;
+    }
+
+}

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/SimpleJavaProvider.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/SimpleJavaProvider.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/SimpleJavaProvider.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/SimpleJavaProvider.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/SimpleJavaProvider.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/providers/SimpleJavaProvider.java	Sun Nov 28 07:27:17 2004
@@ -23,22 +23,18 @@
 
 import org.apache.axis.engine.AxisFault;
 import org.apache.axis.engine.Constants;
-import org.apache.axis.engine.Handler;
+import org.apache.axis.engine.Provider;
 import org.apache.axis.engine.Service;
 import org.apache.axis.engine.context.MessageContext;
 import org.apache.axis.engine.context.SessionContext;
 import org.apache.axis.engine.registry.Parameter;
-import org.apache.axis.om.OMXMLParserWrapper;
-import org.apache.axis.om.impl.OMXMLPullParserWrapper;
-import org.apache.axis.om.impl.SOAPMessageImpl;
-import org.apache.axis.om.soap.SOAPMessage;
 
 /**
  * This is a Simple java Provider. 
  * @author Srinath Perera(hemapani@opensource.lk)
  */
 
-public class SimpleJavaProvider extends AbstractProvider implements Handler {
+public class SimpleJavaProvider extends AbstractProvider implements Provider {
     private String message;
     private QName name;
     private String scope;
@@ -54,8 +50,7 @@
         throws AxisFault
     {
         try {
-            QName serviceName = msgContext.getCurrentService();
-            Service service = msgContext.getGlobalContext().getRegistry().getService(serviceName);
+            Service service = msgContext.getService();
             classLoader = service.getClassLoader();
             Parameter classParm = service.getParameter("className");
             String className = (String)classParm.getValue();
@@ -73,7 +68,8 @@
 
     public Object getTheImplementationObject(
             MessageContext msgContext)throws AxisFault{
-        QName serviceName = msgContext.getCurrentService();                
+            Service service = msgContext.getService();
+            QName serviceName = service.getName();
         if(Constants.APPLICATION_SCOPE.equals(scope)){
             return makeNewServiceObject(msgContext);
         }else if(Constants.SESSION_SCOPE.equals(scope)){
@@ -108,14 +104,14 @@
         return name;
     }
 
-    public void invoke(MessageContext msgContext) throws AxisFault {
+    public MessageContext invoke(MessageContext msgContext) throws AxisFault {
         try {
             //get the implementation class for the Web Service 
             Object obj = getTheImplementationObject(msgContext);
             
             //find the WebService method  
             Class ImplClass =obj.getClass();
-            String methodName = msgContext.getCurrentOperation().getLocalPart();
+            String methodName = msgContext.getOperation().getName().getLocalPart();
             Method[] methods = ImplClass.getMethods();
             for(int i = 0;i<methods.length;i++){
                 if(methods[i].getName().equals(methodName)){
@@ -131,6 +127,7 @@
             //TODO fix the server side  
 //            OMXMLParserWrapper parser = new OMXMLPullParserWrapper();
 //            msgContext.setOutMessage(new SOAPMessageImpl(parser)); 
+            return msgContext;
         }  catch (SecurityException e) {
             throw AxisFault.makeFault(e);
         } catch (IllegalArgumentException e) {

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/recivers/INReciver.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/recivers/INReciver.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/recivers/INReciver.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+
+package org.apache.axis.recivers;
+
+/**
+ * @author Srinath Perera(hemapani@opensource.lk)
+ */
+public class INReciver {
+
+}

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/recivers/InOutAsyncReciver.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/recivers/InOutAsyncReciver.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/recivers/InOutAsyncReciver.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+
+package org.apache.axis.recivers;
+
+/**
+ * @author Srinath Perera(hemapani@opensource.lk)
+ */
+public class InOutAsyncReciver {
+
+}

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/recivers/InOutSyncReciver.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/recivers/InOutSyncReciver.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/recivers/InOutSyncReciver.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+
+package org.apache.axis.recivers;
+
+import org.apache.axis.engine.AxisFault;
+import org.apache.axis.engine.Provider;
+import org.apache.axis.engine.Reciver;
+import org.apache.axis.engine.Sender;
+import org.apache.axis.engine.context.MessageContext;
+import org.apache.axis.handlers.AbstractHandler;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * @author Srinath Perera(hemapani@opensource.lk)
+ */
+public class InOutSyncReciver extends AbstractHandler implements Reciver {
+    protected Log log = LogFactory.getLog(getClass()); 
+
+    public void invoke(final MessageContext msgContext) throws AxisFault {
+        if(msgContext.isNewThreadRequired()){
+            Runnable runner = new Runnable() {
+                public void run() {
+                    try{
+                        send(msgContext);
+                    }catch(AxisFault e){
+                        log.error("Exception occured in new thread starting response",e);
+                    }
+                    
+                }
+            }; 
+            Thread thread = new Thread(runner);
+            thread.start();           
+        }else{
+            send(msgContext);
+        }
+    }
+    
+    public void send(MessageContext msgContext)throws AxisFault{
+        Provider provider = msgContext.getService().getProvider();
+        MessageContext outMsgContext = provider.invoke(msgContext);
+        Sender sender = new Sender();
+        sender.send(msgContext);
+    }
+
+}

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/TransportSender.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/TransportSender.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/TransportSender.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/TransportSender.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/TransportSender.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/TransportSender.java	Sun Nov 28 07:27:17 2004
@@ -32,7 +32,7 @@
         this.out = out;
     }
     public void invoke(MessageContext msgContext) throws AxisFault {
-        SOAPMessage message = msgContext.getOutMessage();
+        SOAPMessage message = msgContext.getMessage();
         //Serialize the Mesage
     }
 }

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/HTTPConstants.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/HTTPConstants.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/HTTPConstants.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/HTTPConstants.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/HTTPConstants.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/HTTPConstants.java	Sun Nov 28 07:27:17 2004
@@ -103,10 +103,6 @@
     public static String MC_HTTP_SERVLETLOCATION= "transport.http.servletLocation";
     public static String MC_HTTP_SERVLETPATHINFO= "transport.http.servletPathInfo";
 
-    /**
-     * @deprecated Should use javax.xml.rpc.Call.SOAPACTION_URI_PROPERTY instead.
-     */
-    public static String MC_HTTP_SOAPACTION = javax.xml.rpc.Call.SOAPACTION_URI_PROPERTY;
 
     /** HTTP header field values
      */

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/SimpleAxisWorker.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/SimpleAxisWorker.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/SimpleAxisWorker.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/SimpleAxisWorker.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/SimpleAxisWorker.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/SimpleAxisWorker.java	Sun Nov 28 07:27:17 2004
@@ -21,15 +21,18 @@
 import java.net.Socket;
 
 import javax.xml.namespace.QName;
-import javax.xml.soap.MimeHeaders;
 
 import org.apache.axis.encoding.Base64;
 import org.apache.axis.engine.AxisEngine;
+import org.apache.axis.engine.AxisFault;
+import org.apache.axis.engine.Service;
+import org.apache.axis.engine.ServiceLocator;
+import org.apache.axis.engine.TransportSenderLocator;
 import org.apache.axis.engine.context.MessageContext;
 import org.apache.axis.engine.registry.EngineRegistry;
 import org.apache.axis.om.OMXMLParserWrapper;
 import org.apache.axis.om.impl.OMXMLPullParserWrapper;
-import org.apache.axis.om.impl.SOAPMessageImpl;
+import org.apache.axis.om.mime.MimeHeaders;
 import org.apache.axis.transport.TransportSender;
 import org.apache.axis.utils.Messages;
 import org.apache.commons.logging.Log;
@@ -46,6 +49,8 @@
     private AxisEngine engine;
     private SimpleAxisServer server;
     private Socket socket;
+    private String serviceFromURI;
+
 
     // Axis specific constants
     private static String transportName = "SimpleHTTP";
@@ -149,19 +154,22 @@
     public void run() {
         try {
             execute();
-        } finally {
+        }catch(AxisFault e){
+            log.error(e);
+        }finally {
+            
         }
     }
     
     /**
      * The main workhorse method.
      */
-    public void execute () {
+    public void execute () throws AxisFault {
         byte buf[] = new byte[BUFSIZ];
         // create an Axis server
 
         MessageContext msgContext = new MessageContext(engine.getRegistry());
-
+        msgContext.setServerSide(true);
 
         // Reusuable, buffered, content length controlled, InputStream
         NonBlockingBufferedInputStream is =
@@ -233,7 +241,7 @@
                                        servicePart.substring(separator + 1));
                         servicePart = servicePart.substring(0, separator);
                     }
-                    msgContext.setCurrentService(new QName(servicePart));
+                   this.serviceFromURI = servicePart;
                 }
 
                 if (authInfo.length() > 0) {
@@ -259,8 +267,6 @@
                     msgContext.setProperty(MessageContext.USER_NAME,userBuf.toString());
                     msgContext.setProperty(MessageContext.PASSWARD,pwBuf.toString());
                 }
-///////////////////////
-                // if get, then return simpleton document as response
                 if (httpRequest.toString().equals("GET")) {
                 		throw new UnsupportedOperationException("GET not supported"); 
                 } else {
@@ -269,16 +275,24 @@
                     // for now, do not complain if no SOAPAction at all
                     String soapActionString = soapAction.toString();
                     if (soapActionString != null) {
-                        msgContext.setUseSOAPAction(true);
-                        msgContext.setSoapAction(soapActionString);
+                        msgContext.setProperty(MessageContext.SOAP_ACTION,soapActionString);
                     }
-
+                    
+                    Service service = ServiceLocator.locateService(serviceFromURI,soapActionString,msgContext);
+                    msgContext.setService(service);
                     // Send it on its way...
                     OutputStream out = socket.getOutputStream();
                     out.write(HTTP);
                     out.write(status);
                     log.info("status written");
-                    msgContext.setTransportSender(new TransportSender(out));
+                    
+                    
+                    
+                    //We do not have any Addressing Headers to put
+                    //let us put the information about incoming transport
+                    msgContext.setProperty(MessageContext.TRANSPORT_TYPE,
+                        TransportSenderLocator.TRANSPORT_TCP);
+                    msgContext.setProperty(MessageContext.TRANSPORT_DATA,out);
 
                     XmlPullParserFactory pf = XmlPullParserFactory.newInstance();
                     pf.setNamespaceAware(true);
@@ -286,7 +300,7 @@
                     parser.setInput(new InputStreamReader(is));
                     
                     OMXMLParserWrapper parserWrapper = new OMXMLPullParserWrapper(parser); 
-                    msgContext.setInMessage(parserWrapper.getSOAPMessage());
+                    msgContext.setMessage(parserWrapper.getSOAPMessage());
                     EngineRegistry reg = engine.getRegistry();
                     // invoke the Axis engine
                     engine.recive(msgContext);

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/TCPTrasnportSender.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/TCPTrasnportSender.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/java/org/apache/axis/transport/http/TCPTrasnportSender.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+
+package org.apache.axis.transport.http;
+
+import java.io.OutputStream;
+
+import org.apache.axis.engine.AxisFault;
+import org.apache.axis.engine.TransportSender;
+import org.apache.axis.engine.context.MessageContext;
+import org.apache.axis.handlers.AbstractHandler;
+import org.apache.axis.om.soap.SOAPMessage;
+
+/**
+ * @author Srinath Perera(hemapani@opensource.lk)
+ */
+public class TCPTrasnportSender extends AbstractHandler implements TransportSender{
+
+    public void invoke(MessageContext msgContext) throws AxisFault {
+        OutputStream out = (OutputStream)msgContext.getProperty(MessageContext.TRANSPORT_DATA);
+        SOAPMessage message = msgContext.getMessage();
+        //TODO write OM  
+    }
+
+    public void revoke(MessageContext msgContext) {
+
+    }
+
+}

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/Echo.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/Echo.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/Echo.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,26 @@
+import org.apache.axis.om.soap.SOAPMessage;
+
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+
+/**
+ * @author Srinath Perera(hemapani@opensource.lk)
+ */
+public class Echo {
+    public SOAPMessage echo(SOAPMessage in){
+        return in;
+    }    
+}

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/Handler1.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/Handler1.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/Handler1.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis.engine.registry.*;
+import org.apache.axis.engine.AxisFault;
+import org.apache.axis.engine.Handler;
+import org.apache.axis.engine.context.MessageContext;
+
+public class Handler1 extends AbstractEngineElement implements Handler {
+    private QName name;
+    public Handler1() {
+    }
+    public QName getName() {
+        return name;
+    }
+
+    public void invoke(MessageContext msgContext) throws AxisFault {
+        System.out.println("I am  Running :)");
+    }
+
+    public void revoke(MessageContext msgContext) {
+        System.out.println("I am  Handler Running :)");
+    }
+
+    public void setName(QName name) {
+        this.name = name;
+    }
+}

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/META-INF/service.xml
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/META-INF/service.xml?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/META-INF/service.xml	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,9 @@
+<service 
+	provider="org.apache.axis.providers.RawXMLProvider" 
+	style="msg">
+	<java:implementation class="Echo"/>
+    <inflow>
+        <handler name="h1" class="Handler1"/>
+     </inflow>
+    <operation name="echo"/>
+</service>
\ No newline at end of file

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/build.xml
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/build.xml?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/samples/msg/echo/build.xml	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<project basedir="." default="jar">
+	<property name="src" location="."/>
+	<property name="build" location="build"/>
+	<property name="build.classes" location="${build}/classes"/>
+	<property name="build.lib" location="${build}/lib"/>
+	<property name="lib" location="lib"/>
+	<property name="root" location="../../../../"/>
+	<property name="jar.dir" location="${root}/target/test-resources/"/>
+	
+	<path id="axis.test.classpath">
+		<path refid="maven.dependency.classpath"></path>
+		<pathelement location="../../../../target/classes"/>
+	</path>
+	
+	<target name="compile" depends="init" unless="jars.uptodate">
+	   <mkdir dir="${build.classes}"/>
+	   <mkdir dir="${build.lib}"/>
+		<javac destdir="${build.classes}" debug="on">
+			<classpath refid="axis.test.classpath" />
+			<src path="${src}"/>
+		</javac>
+	</target>
+	
+	<target name="jar" depends="compile" unless="jars.uptodate">
+       <copy todir="${build.classes}/META-INF">
+			<fileset dir="${basedir}/META-INF/">
+			<include name="**/*.xml"/>
+			<exclude name="build.xml"/>
+			</fileset>
+		</copy>
+
+		<mkdir dir="${jar.dir}"/>
+		<jar jarfile="${jar.dir}/echo-msg.jar" basedir="${build.classes}" >
+			<include name="**" />
+		</jar>
+		<delete dir="${build}"/>
+	</target>
+	
+	<target name="init">
+		<uptodate property="jars.uptodate" targetfile="${jar.dir}/echo.jar">
+			<srcfiles dir="${src}">
+				<include name="**/*.java"/>
+				<include name="**/*.xml"/>
+				<include name="**/*.wsdl"/>
+				<exclude name="${build}/**"/>
+			</srcfiles>
+		</uptodate>
+		<echo message="the files are up to date = ${jars.uptodate}"></echo>
+	</target>
+	
+</project>

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/schema/wsdd.xsd
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/schema/wsdd.xsd?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/schema/wsdd.xsd	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--// 
+            Web Services Deployment Descriptor (WSDD) Version 1.1 (Proposal)
+            
+            BNF NOTE:- everything started with _ is a intermediate varibale
+            The BNF service.xml for the XML in XML out M1 purposed, no data binding support
+            
+            _parameter::=<parameter name="xsd:string" value="xsd:string"/>
+            		|<parameter name="string">xsd:any</parameter/>
+            		
+            _handler::=<handler name="URI">
+            			(_parameter)*
+            			<order phase=”#phase” />
+						<java:implementation class=”..”/>
+		   			</handler>
+		   	_in_flow::= <inflow>(_handler)*<inflow>		
+		   	_out_flow::= <outflow>(_handler)*<outflow>		
+		   	_fault_flow::= <faultflow>(_handler)*<faultflow>		
+		   	
+		   	_operation::=<operation name="xsd:string">
+		   		(_parameter)*
+				(_in_flow)?
+		   		(_out_flow)?
+		   		(_fault_flow)?
+		   		</operation>		
+            
+            _service ::= <service name="URI">
+            	(_operation)*
+           		(_in_flow)?
+		   		(_out_flow)?
+		   		(_fault_flow)?
+           </service>  
+            
+//-->
+<xsd:schema targetNamespace="http://xml.apache.org/axis/wsdd/" xmlns:wsdd="http://xml.apache.org/axis/wsdd/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.1">
+    <xsd:complexType name="parameter">
+        <xsd:sequence>
+            <xsd:element ref="xsd:any" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" type="xsd:NCName" use="optional"/>
+        <xsd:attribute name="value" type="xsd:QName" use="optional"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="java:implementation" xmlns:java="http://xml.apache.org/axis/wsdd/java">
+        <xsd:attribute name="class" type="xsd:URI" use="optional"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="order">
+        <xsd:attribute name="phase" type="xsd:URI" use="optional"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="handler">
+        <xsd:sequence>
+            <xsd:element ref="wsdd:parameter" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:element ref="wsdd:order" minOccurs="0" maxOccurs="unbounded"/>
+        <xsd:element ref="java:implementation" minOccurs="0" maxOccurs="unbounded"/>
+        <xsd:attribute name="name" type="xsd:QName" use="optional"/>
+    </xsd:complexType>
+    
+    <xsd:complexType name="inflow">
+        <xsd:sequence>
+            <xsd:element ref="wsdd:handler" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+    </xsd:complexType>
+    
+    <xsd:complexType name="outflow">
+        <xsd:sequence>
+            <xsd:element ref="wsdd:handler" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+    </xsd:complexType>
+    
+    <xsd:complexType name="faultflow">
+        <xsd:sequence>
+            <xsd:element ref="wsdd:handler" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+    </xsd:complexType>
+    
+    <xsd:complexType name="operation">
+        <xsd:sequence>
+            <xsd:element ref="wsdd:parameter" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:element ref="wsdd:inflow" minOccurs="0" maxOccurs="1"/>
+        <xsd:element ref="wsdd:outflow" minOccurs="0" maxOccurs="1"/>
+        <xsd:element ref="wsdd:faultflow" minOccurs="0" maxOccurs="1"/>
+    </xsd:complexType>
+    
+    
+    <xsd:complexType name="service">
+        <xsd:sequence>
+            <xsd:element ref="wsdd:parameter" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:element ref="wsdd:operation" minOccurs="1" maxOccurs="unbounded"/>
+        <xsd:element ref="wsdd:inflow" minOccurs="0" maxOccurs="1"/>
+        <xsd:element ref="wsdd:outflow" minOccurs="0" maxOccurs="1"/>
+        <xsd:element ref="wsdd:faultflow" minOccurs="0" maxOccurs="1"/>
+    </xsd:complexType>
+</xsd:schema>

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/emtyBodymessage.xml
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/emtyBodymessage.xml?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/emtyBodymessage.xml	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,11 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
+    <soapenv:Header>
+        <wsa:MessageID soapenv:mustUnderstand="0">uuid:920C5190-0B8F-11D9-8CED-F22EDEEBF7E5</wsa:MessageID>
+        <wsa:To soapenv:mustUnderstand="0">http://localhost:8081/axis/services/BankPort</wsa:To>
+        <wsa:From soapenv:mustUnderstand="0">
+            <Address xmlns="http://schemas.xmlsoap.org/ws/2004/03/addressing">http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</Address>
+        </wsa:From>
+    </soapenv:Header>
+    <soapenv:Body>
+    </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/minimalMessage.xml
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/minimalMessage.xml?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/minimalMessage.xml	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,4 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+	<env:Body/>
+</env:Envelope>
\ No newline at end of file

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/reallyReallyBigMessage.xml
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/reallyReallyBigMessage.xml?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/reallyReallyBigMessage.xml	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,2489 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing"> 
+	<env:Header>
+
+<wsdl:definitions targetNamespace="http://echo.services" 
+xmlns="http://schemas.xmlsoap.org/wsdl/" 
+xmlns:impl="http://echo.services-impl" 
+xmlns:intf="http://echo.services" 
+xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
+xmlns:tns1="http://types.echo.services" 
+xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" 
+xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<wsdl:types>
+<schema targetNamespace="http://types.echo.services" 
+xmlns="http://www.w3.org/2001/XMLSchema">
+<import namespace="http://schemas.xmlsoap.org/soap/encoding/" /> 
+<complexType name="MyComplexType">
+<sequence>
+<element name="simpleItem" nillable="true" type="xsd:string" /> 
+</sequence>
+</complexType>
+<element name="MyElement" nillable="true" type="tns1:MyComplexType" /> 
+</schema>
+</wsdl:types>
+<wsdl:message name="echoRequest">
+<wsdl:part element="tns1:MyElement" name="MyElement" /> 
+</wsdl:message>
+<wsdl:message name="echoResponse">
+<wsdl:part element="tns1:MyElement" name="MyElement" /> 
+</wsdl:message>
+<wsdl:portType name="Echo">
+<wsdl:operation name="echo" parameterOrder="MyElement">
+<wsdl:input message="intf:echoRequest" name="echoRequest" /> 
+<wsdl:output message="intf:echoResponse" name="echoResponse" /> 
+</wsdl:operation>
+</wsdl:portType>
+<wsdl:binding name="ComplexEchoServiceSoapBinding" type="intf:Echo">
+<wsdlsoap:binding style="document" 
+transport="http://schemas.xmlsoap.org/soap/http" /> 
+<wsdl:operation name="echo">
+<wsdlsoap:operation soapAction="" /> 
+<wsdl:input name="echoRequest">
+<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
+namespace="http://types.echo.services" use="literal" /> 
+</wsdl:input>
+<wsdl:output name="echoResponse">
+<wsdlsoap:body namespace="http://types.echo.services" use="literal" /> 
+</wsdl:output>
+</wsdl:operation>
+</wsdl:binding>
+<wsdl:service name="ComplexEchoService">
+<wsdl:port binding="intf:ComplexEchoServiceSoapBinding" name="ComplexEchoService">
+<wsdlsoap:address 
+location="http://localhost:8080/axis/services/ComplexEchoService" /> 
+</wsdl:port>
+</wsdl:service>
+</wsdl:definitions>
+	
+	
+    </env:Header>
+    <env:Body>
+    <definitions 
+    name="comprehensive types test"
+    targetNamespace="urn:comprehensive-service.types.wsdl.test"
+    xmlns:tns="urn:comprehensive-service.types.wsdl.test"
+    xmlns:typens="urn:comprehensive-types.types.wsdl.test"
+    xmlns:typens2="urn:comprehensive-types2.types.wsdl.test"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+    xmlns="http://schemas.xmlsoap.org/wsdl/">
+
+
+  <types>
+    <xsd:schema 
+        targetNamespace="urn:comprehensive-types.types.wsdl.test"
+        xmlns:xsd="http://www.w3.org/1999/XMLSchema"
+        xmlns:xsd2="http://www.w3.org/2001/XMLSchema">
+
+      <xsd:simpleType name="simple">
+        <xsd:restriction base="xsd:string" />
+      </xsd:simpleType>
+      
+      <xsd:simpleType name="simpleDate">
+        <xsd:restriction base="xsd:date" />
+      </xsd:simpleType>
+
+      <xsd:simpleType name="simpleDateTime">
+        <xsd:restriction base="xsd2:dateTime" />
+      </xsd:simpleType>
+      
+      <xsd:simpleType name="enum">
+        <xsd:restriction base="xsd:string">
+          <xsd:enumeration value="one"/>                      
+          <xsd:enumeration value="two"/>                    
+          <xsd:enumeration value="three"/>                    
+        </xsd:restriction>
+      </xsd:simpleType>
+
+      <xsd:complexType name="array">
+        <xsd:complexContent>
+          <xsd:restriction base="soapenc:Array">
+            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
+          </xsd:restriction>
+        </xsd:complexContent>
+      </xsd:complexType>
+
+      <xsd:complexType name="array_of_base64">
+        <xsd:complexContent>
+          <xsd:restriction base="soapenc:Array">
+            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:base64Binary[]"/>
+          </xsd:restriction>
+        </xsd:complexContent>
+      </xsd:complexType>
+
+      <xsd:complexType name="complexAll">
+        <xsd:all>
+          <xsd:element name="areaCode" type="xsd:int"/>
+          <xsd:element name="exchange" type="xsd:string"/>
+          <xsd:element name="number" type="xsd:string"/>
+        </xsd:all>
+      </xsd:complexType>
+
+      <xsd:complexType name="complexSequence">
+        <xsd:sequence>
+          <xsd:element name="areaCode" type="xsd:int"/>
+          <xsd:element name="exchange" type="xsd:string"/>
+          <xsd:element name="number" type="xsd:string"/>
+        </xsd:sequence>
+      </xsd:complexType>
+
+      <xsd:complexType name="complexChoice">
+        <xsd:choice>
+          <xsd:element name="choiceA" type="xsd:int"/>
+          <xsd:element name="choiceB" type="xsd:string"/>
+          <xsd:element name="choiceC" type="xsd:string"/>
+        </xsd:choice>
+      </xsd:complexType>
+
+      
+      <xsd:complexType name="Object">
+        <xsd:sequence>
+           <xsd:element name="test" type="xsd:string" />
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:complexType name="String">
+        <xsd:sequence>
+           <xsd:element name="test" type="xsd:string" />
+        </xsd:sequence>
+      </xsd:complexType>
+      <xsd:complexType name="Class">
+        <xsd:sequence>
+           <xsd:element name="test" type="xsd:string" />
+        </xsd:sequence>
+      </xsd:complexType>
+
+      <xsd:element name="enumValue" type="typens:enum"/>
+
+      <xsd:complexType name="time">
+        <xsd:simpleContent>
+          <xsd:extension base="xsd:string">
+            <xsd:attribute name="DST" type="xsd:boolean" />
+          </xsd:extension>
+        </xsd:simpleContent>
+      </xsd:complexType>
+
+      <xsd:complexType name="complexWComplex">
+        <xsd:sequence>
+          <xsd:element name="stock_quote">
+            <xsd:complexType>
+              <xsd:attribute name="symbol" type="xsd:string"/> 
+              <xsd:sequence>
+              
+                <xsd:element name="time" type="typens:time"/>
+                <xsd:element name="change" type="typens:simpleFwd"/>  
+                <xsd:element name="pctchange" type="xsd:string"/>
+                <xsd:element name="bid" type="xsd:string"/>
+                <xsd:element name="ask" type="xsd:string"/>
+                <xsd:element name="choice" type="typens:complexChoice"/>
+              </xsd:sequence>
+              <xsd:attribute name="last" type="xsd:string"/>
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="outside" type="xsd:int"/>
+        </xsd:sequence>
+      </xsd:complexType>
+
+      <xsd:complexType name="emptyFault">
+        <xsd:sequence />
+      </xsd:complexType>
+
+      <xsd:element name="faultElement" type="typens:faultType" />
+      <xsd:complexType name="faultType">
+        <xsd:sequence>
+           <xsd:element name="userData" type="xsd:string" />
+        </xsd:sequence>
+      </xsd:complexType>
+
+      <xsd:complexType name="emptyComplexType">
+        <xsd:sequence />
+      </xsd:complexType>
+
+      <xsd:simpleType name="simpleFwd">
+        <xsd:restriction base="typens:simple" />
+      </xsd:simpleType>
+
+      
+      <xsd:complexType name="arrayM">
+        <xsd:complexContent>
+          <xsd:restriction base="soapenc:Array">
+            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:arrayM2[]"/>
+          </xsd:restriction>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:complexType name="arrayM2">
+        <xsd:complexContent>
+          <xsd:restriction base="soapenc:Array">
+            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:arrayM3[]"/>
+          </xsd:restriction>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:complexType name="arrayM3">
+        <xsd:complexContent>
+          <xsd:restriction base="soapenc:Array">
+            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:int[]"/>
+          </xsd:restriction>
+        </xsd:complexContent>
+      </xsd:complexType>
+
+
+      
+      <xsd:complexType name="Animal">
+        <xsd:all>
+          <xsd:element name="Name" nillable="true" type="xsd:string"/>
+        </xsd:all>
+      </xsd:complexType>
+      <xsd:element name="Animal" nillable="true" type="typens:Animal"/>
+      <xsd:complexType name="Cat">
+        <xsd:complexContent>
+          <xsd:extension base="typens:Animal">
+            <xsd:all>
+              <xsd:element name="Purr" nillable="true" type="xsd:string"/>
+            </xsd:all>
+          </xsd:extension>
+        </xsd:complexContent>
+      </xsd:complexType>
+      <xsd:element name="Cat" nillable="true" type="typens:Cat"/>
+
+      <xsd:complexType name="PersionCat">
+        <xsd:complexContent>
+          <xsd:extension base="typens:Cat">
+            <xsd:all>
+              <xsd:element name="Color" type="xsd:string"/>
+              <xsd:element name="Toy" /> 
+            </xsd:all>
+          </xsd:extension>
+        </xsd:complexContent>
+      </xsd:complexType>
+
+      <xsd:complexType name="Yarn">
+         <xsd:all>
+           <xsd:element name="Color" type="xsd:string"/>
+         </xsd:all>
+      </xsd:complexType>
+
+  
+      <xsd:simpleType name="enumString">
+        <xsd:restriction base="xsd:string">
+          <xsd:enumeration value="Ho Ho Ho"/> 
+          <xsd:enumeration value="He He He"/>                    
+          <xsd:enumeration value="Ha Ha Ha"/>                    
+        </xsd:restriction>
+      </xsd:simpleType>
+      <xsd:simpleType name="enumInt">
+        <xsd:restriction base="xsd:int">
+          <xsd:enumeration value="1"/>
+          <xsd:enumeration value="2"/>                    
+          <xsd:enumeration value="3"/>                    
+        </xsd:restriction>
+      </xsd:simpleType>
+      <xsd:simpleType name="enumLong">
+        <xsd:restriction base="xsd:long">
+          <xsd:enumeration value="1"/>
+          <xsd:enumeration value="2"/>                    
+          <xsd:enumeration value="3"/>                    
+          <xsd:enumeration value="-9223372036854775808"/>                    
+          <xsd:enumeration value="9223372036854775807"/>                    
+        </xsd:restriction>
+      </xsd:simpleType>
+      <xsd:simpleType name="enumShort">
+        <xsd:restriction base="xsd:short">
+          <xsd:enumeration value="1"/>
+          <xsd:enumeration value="2"/>                    
+          <xsd:enumeration value="3"/>                    
+        </xsd:restriction>
+      </xsd:simpleType>
+      <xsd:simpleType name="enumFloat">
+        <xsd:restriction base="xsd:float">
+          <xsd:enumeration value="1.1"/>
+          <xsd:enumeration value="2.2"/>                    
+          <xsd:enumeration value="3.3"/>                    
+        </xsd:restriction>
+      </xsd:simpleType>
+      <xsd:simpleType name="enumDouble">
+        <xsd:restriction base="xsd:double">
+          <xsd:enumeration value="1.1"/>
+          <xsd:enumeration value="2.2"/>                    
+          <xsd:enumeration value="3.3"/>                    
+        </xsd:restriction>
+      </xsd:simpleType>
+      <xsd:simpleType name="enumByte">
+        <xsd:restriction base="xsd:byte">
+          <xsd:enumeration value="1"/>
+          <xsd:enumeration value="2"/>                    
+          <xsd:enumeration value="3"/>                    
+        </xsd:restriction>
+      </xsd:simpleType>
+
+      <xsd:simpleType name="enumInteger">
+        <xsd:restriction base="xsd:integer">
+          <xsd:enumeration value="1"/>
+          <xsd:enumeration value="2"/>                    
+          <xsd:enumeration value="3"/>                    
+        </xsd:restriction>
+      </xsd:simpleType>
+
+      <xsd:simpleType name="flowDirectionType">
+        <xsd:restriction base="xsd:string">
+          <xsd:enumeration value="in"/>
+          <xsd:enumeration value="inOut"/>
+          <xsd:enumeration value="out"/>
+        </xsd:restriction>
+      </xsd:simpleType>
+
+      <xsd:simpleType name="enumNMTOKEN">
+        <xsd:restriction base="xsd:NMTOKEN"> 
+          <xsd:enumeration value="NameToken1"/>
+          <xsd:enumeration value="NameToken2"/>                    
+          <xsd:enumeration value="NameToken3"/>                    
+        </xsd:restriction>
+      </xsd:simpleType>
+
+      <xsd:simpleType name="AIDType">
+        <xsd:restriction base="xsd:hexBinary">
+          <xsd:maxLength value="16"/>
+          <xsd:minLength value="5"/>
+        </xsd:restriction>
+      </xsd:simpleType>
+
+<xsd:simpleType name="passModeType">
+    <xsd:restriction base="xsd:string">
+        <xsd:enumeration value="passByValue"/>
+        <xsd:enumeration value="passByReference"/>
+     </xsd:restriction>
+</xsd:simpleType>
+
+
+<xsd:element name="StringParameter" type="typens:StringParameter" />
+ <xsd:complexType name="StringParameter">
+   <xsd:simpleContent>
+      <xsd:extension base="xsd:string">
+        <xsd:attribute name="numBytes" type="soapenc:int"/>
+        <xsd:attribute name="storageEncoding" type="xsd:string"/>
+        <xsd:attribute name="direction" type="typens:flowDirectionType"/>  
+        <xsd:attribute name="passMode" type="typens:passModeType"/>  
+        <xsd:attribute name="description" type="xsd:string"/>
+      </xsd:extension>
+   </xsd:simpleContent>
+</xsd:complexType>
+
+    </xsd:schema>
+
+
+    <xsd:schema 
+        targetNamespace="urn:comprehensive-types2.types.wsdl.test"
+        xmlns:xsd="http://www.w3.org/1999/XMLSchema">
+        <xsd:complexType name="fwd">
+          <xsd:complexContent>
+            <xsd:restriction base="soapenc:Array">
+              <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:QName[]"/>
+            </xsd:restriction>
+          </xsd:complexContent>
+        </xsd:complexType>
+
+
+        <xsd:element name="three" type="typens:enum" maxOccurs="unbounded" />
+
+
+
+        <xsd:element name="a" type="xsd:short" />
+            <xsd:complexType name="a">
+              <xsd:sequence>
+                <xsd:element name="c" type="xsd:int" />
+              </xsd:sequence>
+            </xsd:complexType>
+        <xsd:complexType name="b">
+          <xsd:sequence>
+            <xsd:element name="d" type="typens2:a" />
+          </xsd:sequence>
+        </xsd:complexType>
+
+
+        <xsd:complexType name="SimpleAnyURIType">
+          <xsd:simpleContent>
+            <xsd:extension base="xsd:anyURI">
+            </xsd:extension>
+          </xsd:simpleContent>
+        </xsd:complexType>
+
+    </xsd:schema>
+
+  </types>
+
+  <message name="empty"/>
+
+  <message name="allPrimitives">
+    <part name="string" type="xsd:string"/>
+    <part name="integer" type="xsd:integer"/>
+    <part name="int" type="xsd:int"/>
+    <part name="long" type="xsd:long"/>
+    <part name="short" type="xsd:short"/>
+    <part name="decimal" type="xsd:decimal"/>
+    <part name="float" type="xsd:float"/>
+    <part name="double" type="xsd:double"/>
+    <part name="boolean" type="xsd:boolean"/>
+    <part name="byte" type="xsd:byte"/>
+    <part name="QName" type="xsd:QName"/>
+    <part name="dateTime" type="xsd:dateTime"/>
+    <part name="base64Binary" type="xsd:base64Binary"/>
+    <part name="hexBinary" type="xsd:hexBinary"/>
+    <part name="soapString" type="soapenc:string"/>
+    <part name="soapBoolean" type="soapenc:boolean"/>
+    <part name="soapFloat" type="soapenc:float"/>
+    <part name="soapDouble" type="soapenc:double"/>
+    <part name="soapDecimal" type="soapenc:decimal"/>
+    <part name="soapInt" type="soapenc:int"/>
+    <part name="soapShort" type="soapenc:short"/>
+    <part name="soapBase64" type="soapenc:base64"/>
+    <part name="time" type="xsd:time"/>
+    <part name="unsignedLong" type="xsd:unsignedLong"/>
+    <part name="unsignedInt" type="xsd:unsignedInt"/>
+    <part name="unsignedShort" type="xsd:unsignedShort"/>
+    <part name="unsignedByte" type="xsd:unsignedByte"/>
+    <part name="nonNegativeInteger" type="xsd:nonNegativeInteger"/>
+    <part name="positiveInteger" type="xsd:positiveInteger"/>
+    <part name="nonPositiveInteger" type="xsd:nonPositiveInteger"/>
+    <part name="negativeInteger" type="xsd:negativeInteger"/>
+    <part name="anyURI" type="xsd:anyURI"/>
+    <part name="gYear" type="xsd:gYear"/>
+    <part name="gMonth" type="xsd:gMonth"/>
+    <part name="gDay" type="xsd:gDay"/>
+    <part name="gYearMonth" type="xsd:gYearMonth"/>
+    <part name="gMonthDay" type="xsd:gMonthDay"/>
+  </message>
+  <message name="inputBoolean">
+    <part name="inBoolean" type="xsd:boolean"/>
+    <part name="boolean" type="xsd:boolean"/>
+  </message>
+
+  <message name="outputBoolean">
+    <part name="outBoolean" type="xsd:boolean"/>
+    <part name="boolean" type="xsd:boolean"/>
+  </message> 
+
+  <message name="inputByte">
+    <part name="inByte" type="xsd:byte"/>
+    <part name="byte" type="xsd:byte"/>
+  </message>
+
+  <message name="outputByte">
+    <part name="outByte" type="xsd:byte"/>
+    <part name="byte" type="xsd:byte"/>
+  </message> 
+
+  <message name="inputShort">
+    <part name="inShort" type="xsd:short"/>
+    <part name="short" type="xsd:short"/>
+  </message>
+
+  <message name="outputShort">
+    <part name="outShort" type="xsd:short"/>
+    <part name="short" type="xsd:short"/>
+  </message>
+
+  <message name="inputInt">
+    <part name="inInt" type="xsd:int"/>
+    <part name="int" type="xsd:int"/>
+  </message>
+
+  <message name="outputInt">
+    <part name="outInt" type="xsd:int"/>
+    <part name="int" type="xsd:int"/>
+  </message>
+
+  <message name="inputLong">
+    <part name="inLong" type="xsd:long"/>
+    <part name="long" type="xsd:long"/>
+  </message>
+
+  <message name="outputLong">
+    <part name="outLong" type="xsd:long"/>
+    <part name="long" type="xsd:long"/>
+  </message>
+
+  <message name="inputFloat">
+    <part name="inFloat" type="xsd:float"/>
+    <part name="float" type="xsd:float"/>
+  </message>
+
+  <message name="outputFloat">
+    <part name="outFloat" type="xsd:float"/>
+    <part name="float" type="xsd:float"/>
+  </message>
+
+  <message name="inputDouble">
+    <part name="inDouble" type="xsd:double"/>
+    <part name="double" type="xsd:double"/>
+  </message>
+
+  <message name="outputDouble">
+    <part name="outDouble" type="xsd:double"/>
+    <part name="double" type="xsd:double"/>
+  </message>
+
+  <message name="inputString">
+    <part name="inString" type="xsd:string"/>
+    <part name="string" type="xsd:string"/>
+  </message>
+
+  <message name="outputString">
+    <part name="outString" type="xsd:string"/>
+    <part name="string" type="xsd:string"/>
+  </message> 
+
+  <message name="inputInteger">
+    <part name="inInteger" type="xsd:integer"/>
+    <part name="integer" type="xsd:integer"/>
+  </message>
+
+  <message name="outputInteger">
+    <part name="outInteger" type="xsd:integer"/>
+    <part name="integer" type="xsd:integer"/>
+  </message>
+
+  <message name="inputDecimal">
+    <part name="inDecimal" type="xsd:decimal"/>
+    <part name="decimal" type="xsd:decimal"/>
+  </message>
+
+  <message name="outputDecimal">
+    <part name="outDecimal" type="xsd:decimal"/>
+    <part name="decimal" type="xsd:decimal"/>
+  </message>
+
+  <message name="inputDateTime">
+    <part name="inDateTime" type="xsd:dateTime"/>
+    <part name="dateTime" type="xsd:dateTime"/>
+  </message>
+
+  <message name="outputDateTime">
+    <part name="outDateTime" type="xsd:dateTime"/>
+    <part name="dateTime" type="xsd:dateTime"/>
+  </message>
+
+  <message name="inputBase64Binary">
+    <part name="inBase64Binary" type="xsd:base64Binary"/>
+    <part name="base64Binary" type="xsd:base64Binary"/>
+  </message>
+
+  <message name="outputBase64Binary">
+    <part name="outBase64Binary" type="xsd:base64Binary"/>
+    <part name="base64Binary" type="xsd:base64Binary"/>
+  </message>
+
+  <message name="inputQName">
+    <part name="inQName" type="xsd:QName"/>
+    <part name="qName" type="xsd:QName"/>
+  </message>
+
+  <message name="outputQName">
+    <part name="outQName" type="xsd:QName"/>
+    <part name="qName" type="xsd:QName"/>
+  </message>
+
+  <message name="inputHexBinary">
+    <part name="inHexBinary" type="xsd:hexBinary"/>
+    <part name="hexBinary" type="xsd:hexBinary"/>
+  </message>
+
+  <message name="outputHexBinary">
+    <part name="outHexBinary" type="xsd:hexBinary"/>
+    <part name="hexBinary" type="xsd:hexBinary"/>
+  </message>
+
+  <message name="inputTime">
+    <part name="inTime" type="xsd:time"/>
+    <part name="time" type="xsd:time"/>
+  </message>
+
+  <message name="outputTime">
+    <part name="outTime" type="xsd:time"/>
+    <part name="time" type="xsd:time"/>
+  </message>
+
+  <message name="inputUnsignedLong">
+    <part name="inUnsignedLong" type="xsd:unsignedLong"/>
+    <part name="unsignedLong" type="xsd:unsignedLong"/>
+  </message>
+
+  <message name="outputUnsignedLong">
+    <part name="outUnsignedLong" type="xsd:unsignedLong"/>
+    <part name="unsignedLong" type="xsd:unsignedLong"/>
+  </message>
+
+  <message name="inputUnsignedInt">
+    <part name="inUnsignedInt" type="xsd:unsignedInt"/>
+    <part name="unsignedInt" type="xsd:unsignedInt"/>
+  </message>
+
+  <message name="outputUnsignedInt">
+    <part name="outUnsignedInt" type="xsd:unsignedInt"/>
+    <part name="unsignedInt" type="xsd:unsignedInt"/>
+  </message>
+
+  <message name="inputUnsignedShort">
+    <part name="inUnsignedShort" type="xsd:unsignedShort"/>
+    <part name="unsignedShort" type="xsd:unsignedShort"/>
+  </message>
+
+  <message name="outputUnsignedShort">
+    <part name="outUnsignedShort" type="xsd:unsignedShort"/>
+    <part name="unsignedShort" type="xsd:unsignedShort"/>
+  </message>
+
+  <message name="inputUnsignedByte">
+    <part name="inUnsignedByte" type="xsd:unsignedByte"/>
+    <part name="unsignedByte" type="xsd:unsignedByte"/>
+  </message>
+
+  <message name="outputUnsignedByte">
+    <part name="outUnsignedByte" type="xsd:unsignedByte"/>
+    <part name="unsignedByte" type="xsd:unsignedByte"/>
+  </message>
+
+  <message name="inputNonNegativeInteger">
+    <part name="inNonNegativeInteger" type="xsd:nonNegativeInteger"/>
+    <part name="NonNegativeInteger" type="xsd:nonNegativeInteger"/>
+  </message>
+
+  <message name="outputNonNegativeInteger">
+    <part name="outNonNegativeInteger" type="xsd:nonNegativeInteger"/>
+    <part name="NonNegativeInteger" type="xsd:nonNegativeInteger"/>
+  </message>
+
+  <message name="inputPositiveInteger">
+    <part name="inPositiveInteger" type="xsd:positiveInteger"/>
+    <part name="PositiveInteger" type="xsd:positiveInteger"/>
+  </message>
+
+  <message name="outputPositiveInteger">
+    <part name="outPositiveInteger" type="xsd:positiveInteger"/>
+    <part name="PositiveInteger" type="xsd:positiveInteger"/>
+  </message>
+
+  <message name="inputNonPositiveInteger">
+    <part name="inNonPositiveInteger" type="xsd:nonPositiveInteger"/>
+    <part name="NonPositiveInteger" type="xsd:nonPositiveInteger"/>
+  </message>
+
+  <message name="outputNonPositiveInteger">
+    <part name="outNonPositiveInteger" type="xsd:nonPositiveInteger"/>
+    <part name="NonPositiveInteger" type="xsd:nonPositiveInteger"/>
+  </message>
+
+  <message name="inputNegativeInteger">
+    <part name="inNegativeInteger" type="xsd:negativeInteger"/>
+    <part name="NegativeInteger" type="xsd:negativeInteger"/>
+  </message>
+
+  <message name="outputNegativeInteger">
+    <part name="outNegativeInteger" type="xsd:negativeInteger"/>
+    <part name="NegativeInteger" type="xsd:negativeInteger"/>
+  </message>
+
+  <message name="inputAnyURI">
+    <part name="inAnyURI" type="xsd:anyURI"/>
+    <part name="anyURI" type="xsd:anyURI"/>
+  </message>
+
+  <message name="outputAnyURI">
+    <part name="outAnyURI" type="xsd:anyURI"/>
+    <part name="anyURI" type="xsd:anyURI"/>
+  </message>
+
+  <message name="inputSimpleAnyURI">
+    <part name="inAnyURI" type="typens2:SimpleAnyURIType"/>
+    <part name="anyURI" type="typens2:SimpleAnyURIType"/>
+  </message>
+
+  <message name="outputSimpleAnyURI">
+    <part name="outAnyURI" type="typens2:SimpleAnyURIType"/>
+    <part name="anyURI" type="typens2:SimpleAnyURIType"/>
+  </message>
+
+  <message name="inputYear">
+    <part name="inYear" type="xsd:gYear"/>
+    <part name="Year" type="xsd:gYear"/>
+  </message>
+
+  <message name="outputYear">
+    <part name="outYear" type="xsd:gYear"/>
+    <part name="Year" type="xsd:gYear"/>
+  </message>
+
+  <message name="inputMonth">
+    <part name="inMonth" type="xsd:gMonth"/>
+    <part name="Month" type="xsd:gMonth"/>
+  </message>
+
+  <message name="outputMonth">
+    <part name="outMonth" type="xsd:gMonth"/>
+    <part name="Month" type="xsd:gMonth"/>
+  </message>
+
+  <message name="inputDay">
+    <part name="inDay" type="xsd:gDay"/>
+    <part name="Day" type="xsd:gDay"/>
+  </message>
+
+  <message name="outputDay">
+    <part name="outDay" type="xsd:gDay"/>
+    <part name="Day" type="xsd:gDay"/>
+  </message>
+
+  <message name="inputYearMonth">
+    <part name="inYearMonth" type="xsd:gYearMonth"/>
+    <part name="YearMonth" type="xsd:gYearMonth"/>
+  </message>
+
+  <message name="outputYearMonth">
+    <part name="outYearMonth" type="xsd:gYearMonth"/>
+    <part name="YearMonth" type="xsd:gYearMonth"/>
+  </message>
+
+  <message name="inputMonthDay">
+    <part name="inMonthDay" type="xsd:gMonthDay"/>
+    <part name="MonthDay" type="xsd:gMonthDay"/>
+  </message>
+
+  <message name="outputMonthDay">
+    <part name="outMonthDay" type="xsd:gMonthDay"/>
+    <part name="MonthDay" type="xsd:gMonthDay"/>
+  </message>
+
+  <message name="inputSoapString">
+    <part name="inSoapString" type="soapenc:string"/>
+    <part name="soapencString" type="soapenc:string"/>
+  </message>
+
+  <message name="outputSoapString">
+    <part name="outSoapString" type="soapenc:string"/>
+    <part name="soapencString" type="soapenc:string"/>
+  </message>
+
+  <message name="inputSoapBoolean">
+    <part name="inSoapBoolean" type="soapenc:boolean"/>
+    <part name="soapencBoolean" type="soapenc:boolean"/>
+  </message>
+
+  <message name="outputSoapBoolean">
+    <part name="outSoapBoolean" type="soapenc:boolean"/>
+    <part name="soapencBoolean" type="soapenc:boolean"/>
+  </message>
+
+  <message name="inputSoapFloat">
+    <part name="inSoapFloat" type="soapenc:float"/>
+    <part name="soapencFloat" type="soapenc:float"/>
+  </message>
+
+  <message name="outputSoapFloat">
+    <part name="outSoapFloat" type="soapenc:float"/>
+    <part name="soapencFloat" type="soapenc:float"/>
+  </message>
+
+  <message name="inputSoapDouble">
+    <part name="inSoapDouble" type="soapenc:double"/>
+    <part name="soapencDouble" type="soapenc:double"/>
+  </message>
+
+  <message name="outputSoapDouble">
+    <part name="outSoapDouble" type="soapenc:double"/>
+    <part name="soapencDouble" type="soapenc:double"/>
+  </message>
+
+  <message name="inputSoapDecimal">
+    <part name="inSoapDecimal" type="soapenc:decimal"/>
+    <part name="soapencDecimal" type="soapenc:decimal"/>
+  </message>
+
+  <message name="outputSoapDecimal">
+    <part name="outSoapDecimal" type="soapenc:decimal"/>
+    <part name="soapencDecimal" type="soapenc:decimal"/>
+  </message>
+
+  <message name="inputSoapInt">
+    <part name="inSoapInt" type="soapenc:int"/>
+    <part name="soapencInt" type="soapenc:int"/>
+  </message>
+
+  <message name="outputSoapInt">
+    <part name="outSoapInt" type="soapenc:int"/>
+    <part name="soapencInt" type="soapenc:int"/>
+  </message>
+
+  <message name="inputSoapShort">
+    <part name="inSoapShort" type="soapenc:short"/>
+    <part name="soapencShort" type="soapenc:short"/>
+  </message>
+
+  <message name="outputSoapShort">
+    <part name="outSoapShort" type="soapenc:short"/>
+    <part name="soapencShort" type="soapenc:short"/>
+  </message>
+
+  <message name="inputSoapBase64">
+    <part name="inSoapBase64" type="soapenc:base64"/>
+    <part name="soapencBase64" type="soapenc:base64"/>
+  </message>
+
+  <message name="outputSoapBase64">
+    <part name="outSoapBase64" type="soapenc:base64"/>
+    <part name="soapencBase64" type="soapenc:base64"/>
+  </message>
+                     
+  <message name="enum">
+    <part name="enum" type="typens:enum"/>
+  </message>
+
+  <message name="enumInt">
+    <part name="enumInt" type="typens:enumInt"/>
+  </message>
+
+  <message name="array">
+    <part name="array" type="typens:array"/>
+  </message>
+
+  <message name="arrayM">
+    <part name="arrayM" type="typens:arrayM"/>
+  </message>
+
+  <message name="complexAll">
+    <part name="complexAll" type="typens:complexAll"/>
+  </message>
+
+  <message name="complexSequence">
+    <part name="complexSequence" type="typens:complexSequence"/>
+  </message>
+
+  <message name="complexWComplex">
+    <part name="complexWComplex" type="typens:complexWComplex"/>
+  </message>
+
+  <message name="any">
+    <part name="any" type="xsd:anyType"/>
+  </message>
+
+  <message name="animal">
+    <part name="animal" type="typens:Animal"/>
+  </message>
+
+  <message name="cat">
+    <part name="cat" type="typens:Cat"/>
+  </message>
+
+  <message name="emptyFault">
+    <part name="theFault" type="typens:emptyFault" />
+  </message>
+
+  <message name="faultWithElement">
+    <part name="fault2" element="typens:faultElement" />
+  </message>
+
+  <message name="emptyComplexType">
+    <part name="emptyComplexType" type="typens:emptyComplexType" />
+  </message>
+
+
+  <portType name="TypeTest">
+    <operation name="allPrimitivesIn">
+      <input message="tns:allPrimitives"/>
+      <output message="tns:empty"/>
+    </operation>
+    <operation name="allPrimitivesInout">
+      <input message="tns:allPrimitives"/>
+      <output message="tns:allPrimitives"/>
+    </operation>
+    <operation name="allPrimitivesOut">
+      <input message="tns:empty"/>
+      <output message="tns:allPrimitives"/>
+    </operation>
+    <operation name="enumIn">
+      <input message="tns:enum"/>
+      <output message="tns:empty"/>
+    </operation>
+    <operation name="enumInout">
+      <input message="tns:enum"/>
+      <output message="tns:enum"/>
+    </operation>
+    <operation name="enumOut" parameterOrder="enum">
+      <input message="tns:empty"/>
+      <output message="tns:enum"/>
+    </operation>
+    <operation name="enumReturn">
+      <input message="tns:empty"/>
+      <output message="tns:enum"/>
+    </operation>
+    <operation name="enumIntIn">
+      <input message="tns:enumInt"/>
+      <output message="tns:empty"/>
+    </operation>
+    <operation name="enumIntInout">
+      <input message="tns:enumInt"/>
+      <output message="tns:enumInt"/>
+    </operation>
+    <operation name="enumIntOut" parameterOrder="enumInt">
+      <input message="tns:empty"/>
+      <output message="tns:enumInt"/>
+    </operation>
+    <operation name="enumIntReturn">
+      <input message="tns:empty"/>
+      <output message="tns:enumInt"/>
+    </operation>
+    <operation name="arrayIn">
+      <input message="tns:array"/>
+      <output message="tns:empty"/>
+    </operation>
+    <operation name="arrayInout">
+      <input message="tns:array"/>
+      <output message="tns:array"/>
+    </operation>
+    <operation name="arrayOut" parameterOrder="array">
+      <input message="tns:empty"/>
+      <output message="tns:array"/>
+    </operation>
+    <operation name="arrayReturn">
+      <input message="tns:empty"/>
+      <output message="tns:array"/>
+    </operation>
+
+    <operation name="arrayMIn">
+      <input message="tns:arrayM"/>
+      <output message="tns:empty"/>
+    </operation>
+    <operation name="arrayMInout">
+      <input message="tns:arrayM"/>
+      <output message="tns:arrayM"/>
+    </operation>
+    <operation name="arrayMOut" parameterOrder="arrayM">
+      <input message="tns:empty"/>
+      <output message="tns:arrayM"/>
+    </operation>
+    <operation name="arrayMReturn">
+      <input message="tns:empty"/>      
+      <output message="tns:arrayM"/>
+    </operation>
+
+    <operation name="complexAllIn">
+      <input message="tns:complexAll"/>
+      <output message="tns:empty"/>
+    </operation>
+    <operation name="complexAllInout">
+      <input message="tns:complexAll"/>
+      <output message="tns:complexAll"/>
+    </operation>
+    <operation name="complexAllOut" parameterOrder="complexAll">
+      <input message="tns:empty"/>
+      <output message="tns:complexAll"/>
+    </operation>
+    <operation name="complexAllReturn">
+      <input message="tns:empty"/>
+      <output message="tns:complexAll"/>
+    </operation>
+    <operation name="complexSequenceIn">
+      <input message="tns:complexSequence"/>
+      <output message="tns:empty"/>
+    </operation>
+    <operation name="complexSequenceInout">
+      <input message="tns:complexSequence"/>
+      <output message="tns:complexSequence"/>
+    </operation>
+    <operation name="complexSequenceOut" parameterOrder="complexSequence">
+      <input message="tns:empty"/>
+      <output message="tns:complexSequence"/>
+    </operation>
+    <operation name="complexSequenceReturn">
+      <input message="tns:empty"/>
+      <output message="tns:complexSequence"/>
+    </operation>
+    <operation name="complexWComplexIn">
+      <input message="tns:complexWComplex"/>
+      <output message="tns:empty"/>
+    </operation>
+    <operation name="complexWComplexInout">
+      <input message="tns:complexWComplex"/>
+      <output message="tns:complexWComplex"/>
+    </operation>
+    <operation name="complexWComplexOut" parameterOrder="complexWComplex">
+      <input message="tns:empty"/>
+      <output message="tns:complexWComplex"/>
+    </operation>
+    <operation name="complexWComplexReturn">
+      <input message="tns:empty"/>
+      <output message="tns:complexWComplex"/>
+    </operation>
+    <operation name="emptyComplexTypeIn" parameterOrder="emptyComplexType">
+      <input message="tns:emptyComplexType"/>
+      <output message="tns:empty"/>
+      <fault name="emptyFault" message="tns:emptyFault"/>
+    </operation>
+    <operation name="emptyComplexTypeInout" parameterOrder="emptyComplexType">
+      <input message="tns:emptyComplexType"/>
+      <output message="tns:emptyComplexType"/>
+      <fault name="emptyFault" message="tns:emptyFault"/>
+    </operation>
+    <operation name="emptyComplexTypeOut" parameterOrder="emptyComplexType">
+      <input message="tns:empty"/>
+      <output message="tns:emptyComplexType"/>
+      <fault name="emptyFault" message="tns:emptyFault"/>
+    </operation>
+    <operation name="emptyComplexTypeReturn">
+      <input message="tns:empty"/>
+      <output message="tns:emptyComplexType"/>
+      <fault name="emptyFault" message="tns:emptyFault"/>
+    </operation>
+    <operation name="anyIn">
+      <input message="tns:any"/>
+      <output message="tns:empty"/>
+    </operation>
+    <operation name="anyInout">
+      <input message="tns:any"/>
+      <output message="tns:any"/>
+    </operation>
+    <operation name="anyOut" parameterOrder="any">
+      <input message="tns:empty"/>
+      <output message="tns:any"/>
+    </operation>
+    <operation name="anyReturn">
+      <input message="tns:empty"/>
+      <output message="tns:any"/>
+    </operation>
+    <operation name="animalIn">
+      <input message="tns:animal"/>
+      <output message="tns:empty"/>
+    </operation>
+    <operation name="animalInout">
+      <input message="tns:animal"/>
+      <output message="tns:animal"/>
+    </operation>
+    <operation name="animalOut" parameterOrder="animal">
+      <input message="tns:empty"/>
+      <output message="tns:animal"/>
+    </operation>
+    <operation name="animalReturn">
+      <input message="tns:empty"/>
+      <output message="tns:animal"/>
+    </operation>
+    <operation name="catIn">
+      <input message="tns:cat"/>
+      <output message="tns:empty"/>
+    </operation>
+    <operation name="catInout">
+      <input message="tns:cat"/>
+      <output message="tns:cat"/>
+    </operation>
+    <operation name="catOut" parameterOrder="cat">
+      <input message="tns:empty"/>
+      <output message="tns:cat"/>
+    </operation>
+    <operation name="catReturn">
+      <input message="tns:empty"/>
+      <output message="tns:cat"/>
+    </operation>
+    <operation name="methodBoolean">
+      <input message="tns:inputBoolean"/>
+      <output message="tns:outputBoolean"/>
+    </operation>
+    <operation name="methodByte">
+      <input message="tns:inputByte"/>
+      <output message="tns:outputByte"/>
+    </operation>
+    <operation name="methodShort">
+      <input message="tns:inputShort"/>
+      <output message="tns:outputShort"/>
+    </operation>
+    <operation name="methodInt">
+      <input message="tns:inputInt"/>
+      <output message="tns:outputInt"/>
+    </operation>
+    <operation name="methodLong">
+      <input message="tns:inputLong"/>
+      <output message="tns:outputLong"/>
+    </operation>
+    <operation name="methodFloat">
+      <input message="tns:inputFloat"/>
+      <output message="tns:outputFloat"/>
+    </operation>
+    <operation name="methodDouble">
+      <input message="tns:inputDouble"/>
+      <output message="tns:outputDouble"/>
+    </operation>
+    <operation name="methodString">
+      <input message="tns:inputString"/>
+      <output message="tns:outputString"/>
+    </operation>
+    <operation name="methodInteger">
+      <input message="tns:inputInteger"/>
+      <output message="tns:outputInteger"/>
+    </operation>
+    <operation name="methodDecimal">
+      <input message="tns:inputDecimal"/>
+      <output message="tns:outputDecimal"/>
+    </operation>
+    <operation name="methodDateTime">
+      <input message="tns:inputDateTime"/>
+      <output message="tns:outputDateTime"/>
+    </operation>    
+    <operation name="methodQName">
+      <input message="tns:inputQName"/>
+      <output message="tns:outputQName"/>
+    </operation>    
+    <operation name="methodTime">
+      <input message="tns:inputTime"/>
+      <output message="tns:outputTime"/>
+    </operation>    
+    <operation name="methodUnsignedLong">
+      <input message="tns:inputUnsignedLong"/>
+      <output message="tns:outputUnsignedLong"/>
+    </operation>    
+    <operation name="methodUnsignedInt">
+      <input message="tns:inputUnsignedInt"/>
+      <output message="tns:outputUnsignedInt"/>
+    </operation>    
+    <operation name="methodUnsignedShort">
+      <input message="tns:inputUnsignedShort"/>
+      <output message="tns:outputUnsignedShort"/>
+    </operation>    
+    <operation name="methodUnsignedByte">
+      <input message="tns:inputUnsignedByte"/>
+      <output message="tns:outputUnsignedByte"/>
+    </operation>
+    <operation name="methodNonNegativeInteger">
+      <input message="tns:inputNonNegativeInteger"/>
+      <output message="tns:outputNonNegativeInteger"/>
+    </operation>    
+    <operation name="methodPositiveInteger">
+      <input message="tns:inputPositiveInteger"/>
+      <output message="tns:outputPositiveInteger"/>
+    </operation>    
+    <operation name="methodNonPositiveInteger">
+      <input message="tns:inputNonPositiveInteger"/>
+      <output message="tns:outputNonPositiveInteger"/>
+    </operation>    
+    <operation name="methodNegativeInteger">
+      <input message="tns:inputNegativeInteger"/>
+      <output message="tns:outputNegativeInteger"/>
+    </operation>    
+    <operation name="methodAnyURI">
+      <input message="tns:inputAnyURI"/>
+      <output message="tns:outputAnyURI"/>
+    </operation>
+    <operation name="methodSimpleAnyURI">
+      <input message="tns:inputSimpleAnyURI"/>
+      <output message="tns:outputSimpleAnyURI"/>
+    </operation>
+    <operation name="methodYear">
+      <input message="tns:inputYear"/>
+      <output message="tns:outputYear"/>
+    </operation>    
+    <operation name="methodMonth">
+      <input message="tns:inputMonth"/>
+      <output message="tns:outputMonth"/>
+    </operation>    
+    <operation name="methodDay">
+      <input message="tns:inputDay"/>
+      <output message="tns:outputDay"/>
+    </operation>    
+    <operation name="methodYearMonth">
+      <input message="tns:inputYearMonth"/>
+      <output message="tns:outputYearMonth"/>
+    </operation>    
+    <operation name="methodMonthDay">
+      <input message="tns:inputMonthDay"/>
+      <output message="tns:outputMonthDay"/>
+    </operation>    
+    <operation name="methodSoapString">
+      <input message="tns:inputSoapString"/>
+      <output message="tns:outputSoapString"/>
+    </operation>
+    <operation name="methodSoapBoolean">
+      <input message="tns:inputSoapBoolean"/>
+      <output message="tns:outputSoapBoolean"/>
+    </operation>
+    <operation name="methodSoapFloat">
+      <input message="tns:inputSoapFloat"/>
+      <output message="tns:outputSoapFloat"/>
+    </operation>
+    <operation name="methodSoapDouble">
+      <input message="tns:inputSoapDouble"/>
+      <output message="tns:outputSoapDouble"/>
+    </operation>
+    <operation name="methodSoapDecimal">
+      <input message="tns:inputSoapDecimal"/>
+      <output message="tns:outputSoapDecimal"/>
+    </operation>
+    <operation name="methodSoapInt">
+      <input message="tns:inputSoapInt"/>
+      <output message="tns:outputSoapInt"/>
+    </operation>
+    <operation name="methodSoapShort">
+      <input message="tns:inputSoapShort"/>
+      <output message="tns:outputSoapShort"/>
+    </operation>    
+  </portType>
+
+
+  <binding name="TypeTestBinding" type="tns:TypeTest">
+    <soap:binding
+        style="rpc"
+        transport="http://schemas.xmlsoap.org/soap/http"/>
+    <operation name="allPrimitivesIn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="allPrimitivesInout">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="allPrimitivesOut">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="enumIn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="enumInout">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="enumOut">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="enumReturn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="enumIntIn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="enumIntInout">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="enumIntOut">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="enumIntReturn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="arrayIn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="arrayInout">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="arrayOut">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="arrayReturn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+
+    <operation name="arrayMIn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="arrayMInout">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="arrayMOut">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="arrayMReturn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+
+    <operation name="complexAllIn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="complexAllInout">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="complexAllOut">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="complexAllReturn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="complexSequenceIn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="complexSequenceInout">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="complexSequenceOut">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="complexSequenceReturn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="complexWComplexIn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="complexWComplexInout">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="complexWComplexOut">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="complexWComplexReturn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="emptyComplexTypeIn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+      <fault name="emptyFault">
+          <soap:fault name="emptyFault" use="encoded"/>
+      </fault>
+    </operation>
+    <operation name="emptyComplexTypeInout">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+      <fault name="emptyFault">
+        <soap:fault name="emptyFault" use="encoded"/>
+      </fault>
+    </operation>
+    <operation name="emptyComplexTypeOut">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+      <fault name="emptyFault">
+        <soap:fault name="emptyFault" use="encoded"/>
+      </fault>
+    </operation>
+    <operation name="emptyComplexTypeReturn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+      <fault name="emptyFault">
+        <soap:fault name="emptyFault" use="encoded"/>
+      </fault>
+    </operation>
+    <operation name="anyIn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="anyInout">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="anyOut">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="anyReturn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="animalIn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="animalInout">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="animalOut">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="animalReturn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="catIn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="catInout">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="catOut">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="catReturn">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodBoolean">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodByte">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodShort">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodInt">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodLong">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodFloat">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodDouble">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodString">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodInteger">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodDecimal">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodDateTime">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>    
+    <operation name="methodQName">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>    
+    <operation name="methodTime">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>    
+    <operation name="methodUnsignedLong">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>    
+    <operation name="methodUnsignedInt">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>    
+    <operation name="methodUnsignedShort">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>    
+    <operation name="methodUnsignedByte">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>    
+    <operation name="methodNonNegativeInteger">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodPositiveInteger">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodNonPositiveInteger">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodNegativeInteger">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    
+    <operation name="methodAnyURI">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>    
+    <operation name="methodSimpleAnyURI">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>    
+    <operation name="methodYear">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>    
+    <operation name="methodMonth">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>    
+    <operation name="methodDay">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>    
+    <operation name="methodYearMonth">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>    
+    <operation name="methodMonthDay">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>    
+    <operation name="methodSoapString">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodSoapBoolean">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodSoapFloat">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodSoapDouble">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodSoapDecimal">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodSoapInt">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>
+    <operation name="methodSoapShort">
+      <soap:operation soapAction=""/>
+      <input>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </input>
+      <output>
+        <soap:body
+            use="encoded"
+            namespace=""
+            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+      </output>
+    </operation>  
+  </binding>
+
+
+  <service name="TypeTestService">
+    <port name="TypeTest" binding="tns:TypeTestBinding">
+      <soap:address location="http://localhost:8080/axis/services/TypeTest"/>
+    </port>
+  </service>
+
+</definitions>
+    
+	 </env:Body>
+</env:Envelope>
\ No newline at end of file

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/sample1.txt
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/sample1.txt?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/sample1.txt	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,12 @@
+POST /axis/services/EchoService HTTP/1.1
+Host: 127.0.0.1
+Content-Type: application/soap+xml; charset="utf-8"
+
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+ <env:Header>
+ </env:Header>
+ <env:Body>
+	<axis2:echoVoid xmlns:axis2="http://ws.apache.org/axis2" ></axis2:echoVoid>
+ </env:Body>
+</env:Envelope>
\ No newline at end of file

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/sample1.xml
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/sample1.xml?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/sample1.xml	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,8 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
+ <env:Header>
+ </env:Header>
+ <env:Body>
+	<axis2:echoVoid xmlns:axis2="http://ws.apache.org/axis2" ></axis2:echoVoid>
+ </env:Body>
+</env:Envelope>
\ No newline at end of file

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/soapmessage.txt
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/soapmessage.txt?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/soapmessage.txt	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,16 @@
+POST /axis/services/EchoService HTTP/1.1
+Host: 127.0.0.1
+Content-Type: application/soap+xml; charset="utf-8"
+
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
+    <soapenv:Header>
+        <wsa:MessageID soapenv:mustUnderstand="0">uuid:920C5190-0B8F-11D9-8CED-F22EDEEBF7E5</wsa:MessageID>
+        <wsa:To soapenv:mustUnderstand="0">http://localhost:8081/axis/services/BankPort</wsa:To>
+        <wsa:From soapenv:mustUnderstand="0">
+            <Address xmlns="http://schemas.xmlsoap.org/ws/2004/03/addressing">http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</Address>
+        </wsa:From>
+    </soapenv:Header>
+    <soapenv:Body>
+        <axis2:echoVoid xmlns:axis2="http://ws.apache.org/axis2" ></axis2:echoVoid>
+    </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/soapmessage.xml
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/soapmessage.xml?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/soapmessage.xml	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,12 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing">
+    <soapenv:Header>
+        <wsa:MessageID soapenv:mustUnderstand="0">uuid:920C5190-0B8F-11D9-8CED-F22EDEEBF7E5</wsa:MessageID>
+        <wsa:To soapenv:mustUnderstand="0">http://localhost:8081/axis/services/BankPort</wsa:To>
+        <wsa:From soapenv:mustUnderstand="0">
+            <Address xmlns="http://schemas.xmlsoap.org/ws/2004/03/addressing">http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</Address>
+        </wsa:From>
+    </soapenv:Header>
+    <soapenv:Body>
+        <axis2:echoVoid xmlns:axis2="http://ws.apache.org/axis2" ></axis2:echoVoid>
+    </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/whitespacedMessage.xml
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/whitespacedMessage.xml?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test-resources/soap/whitespacedMessage.xml	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,28 @@
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing"> 
+	
+	<env:Header>
+	
+	
+	
+	
+	
+        <wsa:MessageID env:mustUnderstand="0">uuid:920C5190-0B8F-11D9-8CED-F22EDEEBF7E5</wsa:MessageID>
+    		       <wsa:To env:mustUnderstand="0">http://localhost:8081/axis/services/BankPort</wsa:To>
+        <wsa:From env:mustUnderstand="0">
+            <Address xmlns="http://schemas.xmlsoap.org/ws/2004/03/addressing">http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</Address>
+        </wsa:From>
+          
+    </env:Header> <env:Body>
+    
+    
+	<axis2:echoVoid xmlns:axis2="http://ws.apache.org/axis2" ></axis2:echoVoid>   
+	
+	
+	
+	
+	
+	
+	
+ </env:Body>
+</env:Envelope>
\ No newline at end of file

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/EchoTest.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/EchoTest.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/EchoTest.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/EchoTest.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/EchoTest.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/EchoTest.java	Sun Nov 28 07:27:17 2004
@@ -17,7 +17,6 @@
 
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
@@ -28,29 +27,8 @@
 import javax.xml.namespace.QName;
 
 import org.apache.axis.AbstractTestCase;
-import org.apache.axis.engine.AxisEngine;
-import org.apache.axis.engine.EngineUtils;
-import org.apache.axis.engine.Global;
-import org.apache.axis.engine.Operation;
-import org.apache.axis.engine.Service;
-import org.apache.axis.engine.SimpleGlobal;
-import org.apache.axis.engine.SimpleModule;
-import org.apache.axis.engine.SimpleOperation;
-import org.apache.axis.engine.SimpleService;
-import org.apache.axis.engine.SimpleTransport;
-import org.apache.axis.engine.Transport;
 import org.apache.axis.engine.context.MessageContext;
-import org.apache.axis.engine.exec.Constants;
-import org.apache.axis.engine.exec.ExecutionChain;
-import org.apache.axis.engine.registry.ConcreateParameter;
-import org.apache.axis.engine.registry.EchoService;
 import org.apache.axis.engine.registry.EngineRegistry;
-import org.apache.axis.engine.registry.MockFlow;
-import org.apache.axis.engine.registry.Module;
-import org.apache.axis.engine.registry.Parameter;
-import org.apache.axis.engine.registry.SimpleEngineRegistry;
-import org.apache.axis.providers.SimpleJavaProvider;
-import org.apache.axis.providers.SyncProvider;
 import org.apache.axis.transport.http.SimpleAxisServer;
 
 /**
@@ -73,12 +51,6 @@
 
     protected void setUp() throws Exception {
         engineRegistry = Utils.createMockRegistry(serviceName,operationName,transportName);
-        
-        mc = new MessageContext(engineRegistry);
-        mc.setCurrentTansport(transportName);
-        mc.setCurrentService(serviceName);
-        mc.setCurrentOperation(operationName);
-
         AxisEngine engine = new AxisEngine(engineRegistry);
         sas = new SimpleAxisServer(engine);
         sas.setServerSocket(new ServerSocket(testingPort));
@@ -92,7 +64,7 @@
 
 
     public void testEchoStringServer() throws Exception{
-    	File file = new File("src/samples/soap/sample1.txt");
+    	File file = new File("src/test-resources/soap/soapmessage.txt");
     	FileInputStream in = new FileInputStream(file);
     	
     	Socket socket = new Socket("127.0.0.1",testingPort);

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/EngineTest.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/EngineTest.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/EngineTest.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/EngineTest.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/EngineTest.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/EngineTest.java	Sun Nov 28 07:27:17 2004
@@ -16,11 +16,12 @@
 
 package org.apache.axis.engine;
 
+import java.io.OutputStream;
+
 import javax.xml.namespace.QName;
 
 import junit.framework.TestCase;
 
-import org.apache.axis.engine.AxisEngine;
 import org.apache.axis.engine.context.MessageContext;
 import org.apache.axis.engine.registry.EngineRegistry;
 
@@ -44,9 +45,15 @@
     protected void setUp() throws Exception {
         engineRegistry = Utils.createMockRegistry(serviceName,operationName,transportName);
         mc = new MessageContext(engineRegistry);
-        mc.setCurrentTansport(transportName);
-        mc.setCurrentService(serviceName);
-        mc.setCurrentOperation(operationName);
+        Service service = engineRegistry.getService(serviceName);
+        mc.setService(service);
+        mc.setOperation(service.getOperation(operationName));
+        
+        OutputStream out = System.out;
+        mc.setProperty(MessageContext.TRANSPORT_TYPE,
+                                TransportSenderLocator.TRANSPORT_TCP);
+        mc.setProperty(MessageContext.TRANSPORT_DATA,out);
+        out.flush();
     }
 
     public void testSend()throws Exception{

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/Utils.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/Utils.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/Utils.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/Utils.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/Utils.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/Utils.java	Sun Nov 28 07:27:17 2004
@@ -17,18 +17,6 @@
 
 import javax.xml.namespace.QName;
 
-import org.apache.axis.engine.AxisFault;
-import org.apache.axis.engine.EngineUtils;
-import org.apache.axis.engine.Global;
-import org.apache.axis.engine.Operation;
-import org.apache.axis.engine.Service;
-import org.apache.axis.engine.SimpleGlobal;
-import org.apache.axis.engine.SimpleModule;
-import org.apache.axis.engine.SimpleOperation;
-import org.apache.axis.engine.SimpleService;
-import org.apache.axis.engine.SimpleTransport;
-import org.apache.axis.engine.Transport;
-import org.apache.axis.engine.context.MessageContext;
 import org.apache.axis.engine.exec.Constants;
 import org.apache.axis.engine.exec.ExecutionChain;
 import org.apache.axis.engine.exec.Phase;
@@ -40,7 +28,6 @@
 import org.apache.axis.engine.registry.Parameter;
 import org.apache.axis.engine.registry.SimpleEngineRegistry;
 import org.apache.axis.providers.SimpleJavaProvider;
-import org.apache.axis.providers.SyncProvider;
 
 /**
  * @author Srinath Perera (hemapani@opensource.lk)
@@ -69,7 +56,7 @@
         Parameter classParam = new ConcreateParameter("className",EchoService.class.getName());
         service.addParameter(classParam);
          
-        service.setProvider(new SyncProvider(new SimpleJavaProvider()));
+        service.setProvider(new SimpleJavaProvider());
         
         Module m1 = new SimpleModule(new QName("","A Mdoule 1"));
         m1.setInFlow(new MockFlow("service module inflow",4));
@@ -95,9 +82,9 @@
         outchain.addPhase(new Phase(Constants.PHASE_SERVICE));
         outchain.addPhase(new Phase(Constants.PHASE_GLOBAL));
         outchain.addPhase(new Phase(Constants.PHASE_TRANSPORT));
-        EngineUtils.addHandlers(service.getInFlow(),outchain,Constants.PHASE_SERVICE);
-        EngineUtils.addHandlers(global.getInFlow(),outchain,Constants.PHASE_GLOBAL);
-        EngineUtils.addHandlers(transport.getInFlow(),outchain,Constants.PHASE_TRANSPORT);
+        EngineUtils.addHandlers(service.getOutFlow(),outchain,Constants.PHASE_SERVICE);
+        EngineUtils.addHandlers(global.getOutFlow(),outchain,Constants.PHASE_GLOBAL);
+        EngineUtils.addHandlers(transport.getOutFlow(),outchain,Constants.PHASE_TRANSPORT);
         service.setOutExecutionChain(outchain);
         
         ExecutionChain faultchain = new ExecutionChain();
@@ -106,9 +93,9 @@
         faultchain.addPhase(new Phase(Constants.PHASE_GLOBAL));
         faultchain.addPhase(new Phase(Constants.PHASE_TRANSPORT));
         
-        EngineUtils.addHandlers(service.getInFlow(),faultchain,Constants.PHASE_SERVICE);
-        EngineUtils.addHandlers(global.getInFlow(),faultchain,Constants.PHASE_GLOBAL);
-        EngineUtils.addHandlers(transport.getInFlow(),faultchain,Constants.PHASE_TRANSPORT);
+        EngineUtils.addHandlers(service.getFaultFlow(),faultchain,Constants.PHASE_SERVICE);
+        EngineUtils.addHandlers(global.getFaultFlow(),faultchain,Constants.PHASE_GLOBAL);
+        EngineUtils.addHandlers(transport.getFaultFlow(),faultchain,Constants.PHASE_TRANSPORT);
         service.setFaultExecutionChain(outchain);
         return engineRegistry;
     }

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/MockFlow.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/MockFlow.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/MockFlow.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/MockFlow.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/MockFlow.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/MockFlow.java	Sun Nov 28 07:27:17 2004
@@ -21,7 +21,7 @@
     public MockFlow(String message, int length) {
         super();
         for (int i = 0; i < length; i++) {
-            SpeakingHandler h1 = new SpeakingHandler();//"Executing " + i + " inside " + message);
+            SpeakingHandler1 h1 = new SpeakingHandler1("Executing " + i + " inside " + message);
             super.addHandler(h1);
         }
     }

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingHandler.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingHandler.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingHandler.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingHandler.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingHandler.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingHandler.java	Sun Nov 28 07:27:17 2004
@@ -25,19 +25,9 @@
 public class SpeakingHandler extends AbstractEngineElement implements Handler {
     private String message;
     private QName name;
-   /*
-    public SpeakingHandler(QName name) {
-        this.name = name;
-    }
-  */
     public SpeakingHandler() {
        this.message = "Hi I amtesting ";
     }
-   /*
-    public SpeakingHandler(String message) {
-        this.message = message;
-    }
-   */
     public QName getName() {
         return name;
     }

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingHandler1.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingHandler1.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingHandler1.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+package org.apache.axis.engine.registry;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis.engine.AxisFault;
+import org.apache.axis.engine.Handler;
+import org.apache.axis.engine.context.MessageContext;
+
+public class SpeakingHandler1 extends AbstractEngineElement implements Handler {
+    private String message;
+    private QName name;
+    public SpeakingHandler1(String message) {
+       this.message = message;
+    }
+    public QName getName() {
+        return name;
+    }
+
+    public void invoke(MessageContext msgContext) throws AxisFault {
+        System.out.println("I am " + message + " Handler Running :)");
+    }
+
+    public void revoke(MessageContext msgContext) {
+        System.out.println("I am " + message + " Handler Running :)");
+    }
+
+    public void setName(QName name) {
+        this.name = name;
+    }
+
+}

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingProvider.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingProvider.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingProvider.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingProvider.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingProvider.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/engine/registry/SpeakingProvider.java	Sun Nov 28 07:27:17 2004
@@ -20,16 +20,18 @@
 
 import org.apache.axis.engine.AxisFault;
 import org.apache.axis.engine.Handler;
+import org.apache.axis.engine.Provider;
 import org.apache.axis.engine.context.MessageContext;
 import org.apache.axis.providers.AbstractProvider;
 
-public class SpeakingProvider extends AbstractProvider implements Handler {
+public class SpeakingProvider extends AbstractProvider implements Provider {
     private String message;
     public SpeakingProvider(){}
 
 
-    public void invoke(MessageContext msgContext) throws AxisFault {
+    public MessageContext invoke(MessageContext msgContext) throws AxisFault {
         System.out.println("I am Speaking Provider Running :)");
+        return msgContext;
     }
 
     public void revoke(MessageContext msgContext) {

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTest.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTest.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTest.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTest.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTest.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTest.java	Sun Nov 28 07:27:17 2004
@@ -35,7 +35,7 @@
 public class OMTest extends TestCase{
     SOAPMessage omdoc;
     protected void setUp() throws Exception {
-        File file = new File("src/samples/soap/sample1.xml");
+        File file = new File("src/test-resources/soap/sample1.xml");
         FileInputStream in = new FileInputStream(file);
         
         XmlPullParserFactory pf = XmlPullParserFactory.newInstance();

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTestCase.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTestCase.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTestCase.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTestCase.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTestCase.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTestCase.java	Sun Nov 28 07:27:17 2004
@@ -35,21 +35,8 @@
 
     protected SOAPMessage soapMessage;
     protected SOAPEnvelope soapEnvelope;
-
-
     protected void setUp() throws Exception {
-        super.setUp();
-        soapMessage = getOMBuilder().getSOAPMessage();
+        soapMessage = OMTestUtils.getOMBuilder(IN_FILE_NAME).getSOAPMessage();
         soapEnvelope = soapMessage.getEnvelope();
     }
-
-    protected OMXMLPullParserWrapper getOMBuilder() throws Exception {
-        XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
-        parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
-        parser.setInput(new FileReader(IN_FILE_NAME));
-        omXmlPullParserWrapper = new OMXMLPullParserWrapper(parser);
-        return omXmlPullParserWrapper;
-    }
-
-
 }

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTestUtils.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTestUtils.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/OMTestUtils.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.
+ */
+
+package org.apache.axis.om;
+
+import java.io.FileReader;
+import java.util.Iterator;
+
+import junit.framework.TestCase;
+
+import org.apache.axis.om.impl.OMXMLPullParserWrapper;
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserFactory;
+
+/**
+ * @author Srinath Perera(hemapani@opensource.lk)
+ */
+public class OMTestUtils {
+    public static OMXMLPullParserWrapper getOMBuilder(String file) throws Exception {
+        XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
+        parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
+        parser.setInput(new FileReader(file));
+        OMXMLPullParserWrapper omXmlPullParserWrapper = new OMXMLPullParserWrapper(parser);
+        return omXmlPullParserWrapper;
+    }
+    
+    public static void walkThrough(OMElement omEle){
+        Iterator attibIt = omEle.getAttributes();
+        while(attibIt.hasNext()){
+            TestCase.assertNotNull("once the has next is not null, the " +
+                            "eleemnt should not be null",attibIt.next());
+        }
+        Iterator it = omEle.getChildren();
+        while(it.hasNext()){
+            OMNode ele = (OMNode)it.next();
+            TestCase.assertNotNull("once the has next is not null, the " +
                "eleemnt should not be null",ele);
+            
+            if(ele instanceof OMElement){
+                walkThrough((OMElement)ele);
+            }    
+        }
+    
+    } 
+
+}

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/soap/MessagesTest.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/soap/MessagesTest.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/soap/MessagesTest.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,57 @@
+/**
+* Copyright 2001-2004 The Apache Software Foundation.
+* <p/>
+* Licensed 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
+* <p/>
+* http://www.apache.org/licenses/LICENSE-2.0
+* <p/>
+* 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.
+* <p/>
+* Author: Eran Chinthaka - Lanka Software Foundation
+* Date: Nov 2, 2004
+* Time: 2:39:39 PM
+*/
+package org.apache.axis.om.soap;
+
+import org.apache.axis.om.OMException;
+import org.apache.axis.om.OMTestCase;
+import org.apache.axis.om.OMTestUtils;
+
+
+public class MessagesTest extends OMTestCase {
+    SOAPMessage soapMessage;
+    SOAPEnvelope soapEnvelope;
+
+    public void testMessageWithLotOfWhiteSpaces() throws OMException, Exception {
+        soapMessage = OMTestUtils.getOMBuilder("src/test-resources/soap/whitespacedMessage.xml").getSOAPMessage();
+        soapEnvelope = soapMessage.getEnvelope();
+        OMTestUtils.walkThrough(soapEnvelope);
+    }
+    
+    public void testMinimalMessage() throws OMException, Exception {
+        soapMessage = OMTestUtils.getOMBuilder("src/test-resources/soap/minimalMessage.xml").getSOAPMessage();
+        soapEnvelope = soapMessage.getEnvelope();
+        OMTestUtils.walkThrough(soapEnvelope);
+    }
+    
+    public void testReallyBigMessage() throws OMException, Exception {
+        soapMessage = OMTestUtils.getOMBuilder("src/test-resources/soap/reallyReallyBigMessage.xml").getSOAPMessage();
+        soapEnvelope = soapMessage.getEnvelope();
+        OMTestUtils.walkThrough(soapEnvelope);
+    }
+    
+    public void testEmptyBodiedMessage() throws OMException, Exception {
+        soapMessage = OMTestUtils.getOMBuilder("src/test-resources/soap/emtyBodymessage.xml").getSOAPMessage();
+        soapEnvelope = soapMessage.getEnvelope();
+        OMTestUtils.walkThrough(soapEnvelope);
+    }
+
+    
+
+}

Added: webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/soap/SOAPEnvelopeAnotherTest.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/soap/SOAPEnvelopeAnotherTest.java?view=auto&rev=106816
==============================================================================
--- (empty file)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/soap/SOAPEnvelopeAnotherTest.java	Sun Nov 28 07:27:17 2004
@@ -0,0 +1,42 @@
+/**
+* Copyright 2001-2004 The Apache Software Foundation.
+* <p/>
+* Licensed 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
+* <p/>
+* http://www.apache.org/licenses/LICENSE-2.0
+* <p/>
+* 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.
+* <p/>
+* Author: Eran Chinthaka - Lanka Software Foundation
+* Date: Nov 2, 2004
+* Time: 2:39:39 PM
+*/
+package org.apache.axis.om.soap;
+
+import org.apache.axis.om.OMTestCase;
+import org.apache.axis.om.OMTestUtils;
+
+
+public class SOAPEnvelopeAnotherTest extends OMTestCase {
+    SOAPMessage soapMessage;
+    SOAPEnvelope soapEnvelope;
+    protected void setUp() throws Exception {
+        soapMessage = OMTestUtils.getOMBuilder("src/test-resources/soap/sample1.xml").getSOAPMessage();
+        soapEnvelope = soapMessage.getEnvelope();
+    }
+    public void testGetHeader() {
+        SOAPHeader header = soapEnvelope.getHeader();
+        assertTrue("Header information retrieved not correct", ( header != null && header.getLocalName().equalsIgnoreCase("Header")) );
+    }
+
+    public void testGetBody() {
+        SOAPBody body = soapEnvelope.getBody();
+        assertTrue("Header information retrieved not correct", ( body != null && body.getLocalName().equalsIgnoreCase("Body")) );
+    }
+}

Modified: webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/soap/SOAPEnvelopeTest.java
Url: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/soap/SOAPEnvelopeTest.java?view=diff&rev=106816&p1=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/soap/SOAPEnvelopeTest.java&r1=106815&p2=webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/soap/SOAPEnvelopeTest.java&r2=106816
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/soap/SOAPEnvelopeTest.java	(original)
+++ webservices/axis/trunk/java/dev/scratch/prototype1/src/test/org/apache/axis/om/soap/SOAPEnvelopeTest.java	Sun Nov 28 07:27:17 2004
@@ -26,8 +26,6 @@
     protected void setUp() throws Exception {
         super.setUp();
     }
-
-
     public void testGetHeader() {
         SOAPHeader header = soapEnvelope.getHeader();
         assertTrue("Header information retrieved not correct", ( header != null && header.getLocalName().equalsIgnoreCase("Header")) );
@@ -36,9 +34,5 @@
     public void testGetBody() {
         SOAPBody body = soapEnvelope.getBody();
         assertTrue("Header information retrieved not correct", ( body != null && body.getLocalName().equalsIgnoreCase("Body")) );
-
     }
-
-
-
 }